0

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

我目前的实现如下:

两张主桌——

->Users
User ID
UserInfo

->Products
Product ID 
ProductInfo

两个不同的查找表

->UserToProduct
UserID
ProductID

->ProductToUSer
ProductID 
UserID

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

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

4

2 回答 2

3

您不需要两个查找表,您只需要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

您真的不需要或想要两个不同的查找表。您应该只有一个(您的表 UserToProduct 或 ProductToUser 都可以)。查找表的主键应该是由 ProductID 和 UserID 组成的复合键。

于 2012-11-28T19:07:52.290 回答