Mysql数据库设计中有多对多的关系

时间:2012-10-27 19:31:12

标签: mysql database database-design

我正在设计一个数据库,它将产品和携带它们的商店联系起来。

许多商店将携带相同的产品。 同样,显然,每家商店会有很多类型的产品。

我试图对制作表格的最佳方法进行一些研究,但我在网上阅读的所有资源都在技术上令人筋疲力尽,逻辑上正式化,从而无法直观地理解他们所说的内容。

我一直听到有人说你应该使用联结表,但我不明白这是怎么适用于我的情况。

我想要做的是为“商店”类别创建一行,然后分别创建“product_1”,“product_2”“product_x”等行,其中我将列出商店销售的每个产品,但是我我不确定这是不是很好。

此外,一些商店可能有50个产品,这意味着我需要50行。我不确定是否有办法解决这个问题。

最终,我的问题是,按照标准惯例,这种关系的理想数据库结构是什么?

1 个答案:

答案 0 :(得分:4)

我会有三张桌子。一个用于商店[name,id&信息]。一件物品[name,id&信息]。一个链接两个[关系id,商店ID& item id]。

这使您无需更新关系表即可更改商店和商品数据。

因此,如果您想要商店中的商品,则在关系表中搜索与商店ID匹配的商品。反之亦然,如果您想要拥有商品的商店,您可以在关系表中搜索商品ID,并返回带有该商品的商店ID。

裸露的必需品示例:

STORE:
*********************
storeID    storeName
*********************
1          store1
2          store2
3          store3

ITEMS:
*********************
itemID    itemName
*********************
1          item1
2          item2
3          item3

RELATIONS:
*********************
storeID    itemID
*********************
1          1
1          2
2          1
2          3
3          2
3          3

因此,为了找到store1有哪些项,你将得到storeID为1,并搜索关系表以查找哪些行具有商店ID = 1,这将返回第一行和第二行,这告诉你store1有项目类似于找到哪些商店cary item2你将获得item2的ID,即2,在关系表中搜索itemID = 2,这将返回第二行和第五行,这告诉你商店1和3有item2 。