[英]Stuck at many-to-many relationship in mysql database
我正在做一個簡單的購物應用程序作為我的項目。 我堅持要保持多對多的關系。
我必須在一些有關系的表中存儲用戶事務的所有細節。 這是一些重要的專欄。
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
在這里,一個用戶可以購買許多產品,並且許多用戶可以購買一種產品。 所以我很困惑,如何管理這個表。 我的意思是哪一個是主鍵。
我將管理這些信息的表數無關緊要。 但我需要管理這些信息。 任何人都可以粗略地管理這個問題。 這樣我才能朝那個方向努力。
謝謝。
對於交易,您只需要1個表 - 就像您剛剛發布的那樣。
如果您需要知道某個用戶購買了哪些產品,您可以在此表中查詢User_Id
,如果您需要知道某個產品的購買者是哪個用戶,則可以在表中查詢Associated_Product_Id
。 (我假設你已經擁有了產品和用戶的表,因為你在這里引用了ID。)
您當然應該添加一列Transaction_Id
或類似的東西,以唯一地標識一個事務。
由於您正在將購物應用程序作為項目進行,因此您可能需要考慮在架構中添加第四個表以保存訂單。
您的表可能看起來像:
Users
-----
UserID (PK)
... (Other user details)
Product
-------
ProductID (PK)
... (Other product details)
Order
-----
OrderID (PK)
UserID (FK)
OrderDate
OrderLine
---------
OrderID (PK)
ProductID (PK)
OrderQuantity
這樣,您就可以查看用戶在任何給定日期購買的產品的數量,而不是用戶購買了多少單位。
你需要三個表:
1)用戶表2)產品表3)交易表
用戶1:m交易交易1:m產品
交易將需要鍵來鏈接用戶和產品
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字段的相應名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.