簡體   English   中英

困在mysql數據庫中的多對多關系

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM