0

我正在做一个简单的购物应用程序作为我的项目。我坚持保持多对多的关系。

我必须将用户事务的所有详细信息存储在一些有关系的表中。以下是一些重要的专栏。

User_Id -- Foreign key from user table
Associated_Product_Id -- Foreign key from product table
Associated_Product_Quantity -- Not Null

为了更简单

user1         product1         5 pieces
user1         product2         2 pieces
user1         product3         1 piece
user2         product1         2 pieces
user2         product3         3 pieces

这里一个用户可以购买很多产品,一个产品可以被多个用户购买。所以我很困惑,如何管理这张桌子。我的意思是哪个是主键。

我将在多少张表中管理这些信息并不重要。但我需要管理这些信息。任何人都可以就管理这个问题给出一个粗略的想法。这样我就可以朝那个方向努力。

谢谢。

4

4 回答 4

1

对于交易,您只需要 1 张桌子 - 就像您刚刚发布的那样。

如果您需要知道某个用户购买了哪些产品,您可以查询此表User_Id,如果您需要知道某个用户购买了哪些产品,您可以查询该表Associated_Product_Id。(我假设您已经有了产品和用户表,因为您在这里引用了 ID。)

您当然应该添加一列Transaction_Id或类似的东西,以唯一标识交易。

于 2013-03-16T11:51:58.040 回答
1

由于您将购物应用程序作为一个项目进行,因此您可能需要考虑将第四个表添加到您的模式中,以保存订单。

您的表格可能看起来像:

Users
-----
UserID (PK)
... (Other user details)

Product
-------
ProductID (PK)
... (Other product details)

Order
-----
OrderID (PK)
UserID (FK)
OrderDate

OrderLine
---------
OrderID (PK)
ProductID (PK)
OrderQuantity

然后,这将使您能够查看用户在任何给定日期购买了多少单位产品,而不仅仅是该用户曾经购买过多少单位。

于 2013-03-16T12:07:17.983 回答
0

你需要三个表:

1) 用户表 2) 产品表 3) 交易表

用户 1:m 交易 交易 1:m 产品

交易需要密钥来链接用户和产品

于 2013-03-16T11:41:25.330 回答
0

MySQL 不允许您仅在两个表中使用多对多关系。您必须为要关联的两个表创建第三个表。

第三个表将只包含产品和用户的外键(加上每笔交易的 ID)。

一个简单的例子是:

CREATE TABLE Product_User (
    trans_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    product_id INT NOT NULL, 
    user_id INT NOT NULL, 
    FOREIGN KEY (product_id) REFERENCES Product_table (productid), 
    FOREIGN KEY (user_id) REFERENCES User_table (userid)
);

具有表和 id 字段的相应名称。

于 2013-03-16T11:55:13.090 回答