数据库设计:多对多问题

时间:2010-07-15 08:39:34

标签: database-design

我有一个包含这些表的数据库:

的产品,颜色,大小

每件产品(T恤,牛仔裤等)都可以有多种颜色,每种颜色可以有多种尺寸

修改

产品可以共享颜色和颜色可以共享大小

所以我制作了一个xref_products_colors表和xref_color_sizes表。可以,还是有更好的方法来设计这个数据库?

4 个答案:

答案 0 :(得分:1)

不是每条牛仔裤都有不同颜色的自己的产品吗?产品在尺寸和颜色的集合中是“独一无二的”。

我会做这样的事情:

CollectionBrand甚至可能同时拥有Collection聚合品牌的位置。

然后我会在products

中使用此布局

IdSizeColorCollection

但是,在这种情况下,您会看到大小,颜色的多行,因此您甚至可以将不同的颜色视为不同的Collection,而Collection表可能如下所示:

IdBrandColor

然后您将具有特定尺寸的Products附加到Collection,如下所示:

IdCollectionSize让它更加规范化。

答案 1 :(得分:0)

首先,将N对N关系建模为单独的链接表是可以的。

然而,在您的特定型号中,奇怪的是,尺寸与颜色相关联。这似乎是错误的,因为颜色本身与尺寸无关。

我个人可能会将颜色和大小都放在同一个表中,以表示只有这两个属性的特定组合,然后将此表链接到products表。

答案 2 :(得分:0)

根据它的外观,你需要采用Niedermair先生的建议,或者有三个表,PRODUCT带有product_id键,COLORS带有product_id和colour_id键,SIZES带有product_id,colour_id和size_id键。

虽然它看起来并不是真正的N-to-N关系,因为想要红色衬衫的人不太可能对红色汽车感兴趣。

编辑 - 我提到的答案刚刚消失。在其中,响应者建议使用表格PRODUCT键入产品,颜色和尺寸。

答案 3 :(得分:0)

希望这是不言自明的。

product_color_size