0

Usersとproductsの2つのテーブルがあるリレーショナルデータベースを作成したいと思います。各テーブルの各アイテムは、2番目のテーブルの多くのアイテムに関連付けることができます。

私の現在の実装は次のとおりです。

2つのメインテーブル-

->Users
User ID
UserInfo

->Products
Product ID 
ProductInfo

2つの異なるルックアップテーブル

->UserToProduct
UserID
ProductID

->ProductToUSer
ProductID 
UserID

ユーザーから製品へのリレーションが追加されるたびに、最初のルックアップテーブルに行を追加するだけです。その逆も同様です。

これは正しい方法ですか?私が参照できるそのようなシナリオの標準モデルはありますか?

4

2 に答える 2

3

2つのルックアップテーブルは必要ありません。必要なのは。ですusers_products。リソースに関しては、数え切れないほどあります。グーグルの「多対多のデー​​タベース」だけです。

アップデート

このデータを検討してください。

products
------------
id     info
------------
1      car
2      flute
3      football

users
------------
id     info
------------
10     bob
20     tim
30     manning

さて、簡単な例として、マニングがサッカーと車を所有しているとしましょう。ティムがフルートとサッカーを所有しているとしましょう。これがルックアップテーブルです。

users_products
----------------------
user_id    product_id
----------------------
  20           2
  20           3
  30           3
  30           1

それでおしまい。これで、「車を持っているすべてのユーザーを私にくれ」、「ユーザーが持っているすべての車を私にくれ」などのクエリを実行できます。

乾杯

于 2012-11-28T19:06:33.887 に答える
1

2つの異なるルックアップテーブルは本当に必要ないか、必要ありません。1つだけ必要です(テーブルのUserToProductまたはProductToUserのいずれかで問題ありません)。ルックアップテーブルの主キーは、ProductIDとUserIDの両方で構成される複合キーである必要があります。

于 2012-11-28T19:07:52.290 に答える