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

ここでは、1 人のユーザーが多くの製品を購入でき、1 つの製品を多くのユーザーが購入できます。だから私は完全に混乱しています、このテーブルを管理する方法。ここでは、どちらが主キーであるかを意味します。

これらの情報を管理するテーブルの数は問題ではありません。しかし、私はそれらの情報を管理する必要があります。これを管理するための大まかなアイデアを誰でも教えてもらえますか。その方向に取り組むことができるように。

ありがとう。

4

4 に答える 4

1

ショッピングアプリケーションをプロジェクトとして実行しているため、Ordersを保持するために、スキーマに4番目のテーブルを追加することを検討することをお勧めします。

その場合、テーブルは次のようになります。

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 に答える
1

トランザクションには、投稿したばかりのようなテーブルが 1 つだけ必要です。

特定のユーザーが購入した製品を知る必要がある場合は、このテーブルにクエリを実行しUser_Id、特定の製品がどのユーザーによって購入されたかを知る必要がある場合は、テーブルにクエリを実行しますAssociated_Product_Id。(ここで ID を参照しているため、製品とユーザーのテーブルが既にあると仮定します。)

Transaction_Idもちろん、トランザクションを一意に識別するために、列などを追加する必要があります。

于 2013-03-16T11:51:58.040 に答える
0

MySQL では、2 つのテーブルだけで多対多の関係を使用することはできません。関連付ける 2 つのテーブルの 3 つ目のテーブルを作成する必要があります。

3 番目のテーブルには、製品とユーザーの外部キー (および各トランザクションの 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 に答える
0

次の 3 つのテーブルが必要です。

1) ユーザーテーブル 2) 製品テーブル 3) トランザクションテーブル

ユーザー 1:m トランザクション トランザクション 1:m 製品

トランザクションには、ユーザーと製品の両方をリンクするためのキーが必要です

于 2013-03-16T11:41:25.330 に答える