为产品变体设计数据库

时间:2012-07-26 13:56:01

标签: mysql database-design

我想模拟产品变体(不是选项或属性,只是变体)。

所以每个变体都是产品本身。对产品的所有变体有效的一般信息存储在另一个表中(例如:文本描述)。好的,我觉得这很好,不需要进一步的改变。

对于相关选项(例如颜色:红色,尺寸:小),我创建了两个变体。

变式1:

diagram 1

表格的简短说明:

  • 选项:存储所有可用选项(颜色,大小,材料......)
  • 值:存储所有可用值(红色,蓝色,绿色,小,中,大,铁,木)
  • option_value:存储所有可能的选项和值组合(颜色:{红色,蓝色,绿色},尺寸:{小,中,大},...
  • product_option_value现在将产品与其选项相关联(例如:颜色:红色,尺寸:小,product_id:1;颜色:蓝色,尺寸:小,product_id:1)

好吧,我认为这样可以很好地工作 - 左边是用于构建UI的元数据描述(哪些选项,哪些值,哪些组合) - 右侧是与产品的链接。

但是有一个问题......描述了选项和值的可能组合以构建GUI,并且可以以编程方式验证它,但数据库无法进行验证。

因此我创建了变体2:

diagram 2

现在我不确定第二种解决方案是否更好。你怎么看?还有改进的余地吗?

1 个答案:

答案 0 :(得分:0)

如果您想将product_option_value 限制为option_value中已存在的值,则为是,第二个模型更好。

然而,该模型允许在多个选项之间共享单个值(例如,“红色”可以是“颜色”和“大小”)。我猜这不是你想要的,在这种情况下,模型看起来应该类似于:

enter image description here