两个表之间的多对多关系

时间:2012-11-28 19:05:06

标签: mysql database

我想创建一个关系数据库,其中有两个表Users和products。每个表的每个项目都可以与第二个表格的许多项目相关联。

我目前的实施如下:

两个主要表格 -

->Users
User ID
UserInfo

->Products
Product ID 
ProductInfo

两个不同的查找表

->UserToProduct
UserID
ProductID

->ProductToUSer
ProductID 
UserID

每次添加从用户到产品的关系时,我只需在第一个查找表中添加一行,反之亦然。

这是正确的方法吗?我可以参考这些场景的标准模型吗?

2 个答案:

答案 0 :(得分:3)

您不需要两个查找表,只需users_products即可。至于资源,有数以万计,只需google “数据库多对多”

<强>更新

考虑这些数据:

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

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

现在,作为一个简单的例子,让我们说 manning 拥有足球和汽车。让我们说 tim 拥有长笛和足球。现在这是你的查找表:

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

就是这样。现在你可以进行诸如“给我所有拥有汽车的用户”,或“给我所有用户拥有的汽车”等查询,等等。

干杯

答案 1 :(得分:1)

您确实不需要或不需要两个不同的查找表。你应该只有一个(你的表,UserToProduct或ProductToUser,没关系)。查找表的主键应该是由ProductID和UserID组成的组合键。