2010-07-15 112 views
1

我有这些表的数据库:数据库设计:许多到许多问题

产品,颜色,大小

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

编辑

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

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

回答

0

希望这是不言自明的。

product_color_size

+0

需要修改答案。附加的图像被破坏。 – stwhite 2016-05-15 14:50:32

0

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

然而,在特定的模型中,让我觉得奇怪的是,尺寸与颜色有关。这似乎是错误的,因为颜色本质上与尺寸无关。

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

+0

我想他明白,你可以使用参考表在许多一对多的关系,但问题在一般的设计布局。你认为你正在接受与具有尺寸的产品说话相同的东西。 – 2010-07-15 08:47:34

+0

我不认为这很奇怪。例如,我们说,这件黑色T恤有S,M,L,这个白色只有XL – chchrist 2010-07-15 08:53:42

+1

可以,但是你说的是*产品和颜色;你不会说这样的话,“白色是可用的XXL,红色可用于所有尺寸。” – stakx 2010-07-15 08:55:48

1

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

我会做这样的事情:

CollectionBrand甚至可能有两种情况:一Collection聚集的一个品牌。

然后我会在这个布局中products

IdSizeColorCollection

但是,你会看到大小的多张线,颜色在这种情况下,所以你甚至可以看到不同的颜色作为一个不同的CollectionCollection表看起来是这样的:

IdBrandColor

然后你附加Products具有特定大小的Collection这样的:

IdCollectionSize让它多一点归。

+0

它的x =它的x;它=它是=>它的集合。 – Konerak 2010-07-15 08:49:53

+0

* @ Konerak:*请你原谅? – stakx 2010-07-15 08:50:37

+0

@Konerak,谢谢! – 2010-07-15 09:48:15

0

通过它的外观,您需要采用Mr Niedermair的建议或具有三个表,带有product_id键的PRODUCT,带有product_id和colour_id键的COLORS,以及带有product_id,colour_id和size_id键的SIZES。

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

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

+0

编辑中的最后一位;在product_id,colour_id和size_id上​​键入一张表。如果没有与红色帽子相关的特殊属性,而不是蓝色帽子,这是有道理的。 – 2010-07-15 09:32:31