产品和类别表。创建与引用不同类别实体的产品和类别属性的关系

时间:2014-04-04 15:52:44

标签: sql e-commerce categories product

我正在尝试创建一个电子商务网站,一种基本的阿里巴巴。最终目标是创建n类彼此不严格相关的产品(即鞋子和酒)。

我的主要问题是找出一种处理与产品表相关的类别表/实体的方法。

product表将具有通用属性,而productCatagoryEntity中的属性将特定于Category。

如何创建足够灵活的ERD来应对这一目标?

我考虑创建product_TO_productCategoryEntity表来链接product表和productCategoryEntity表,当产品链接到类别时,与Category表相关的product_TO_productCategoryEntity外键属性将具有非null值,而对于类别与产品无关的FK将为空。

显然,在product_TO_productCategoryEntity表中,我应该列出所有n个类别表,这个模型可能会导致难以维护。

我正朝着正确的方向前进?

请提供我最终可以学习的任何主题,模式,书籍或参考资料。

enter image description here

@Dan Bracuk的回答,我根据他的建议加入了ERD:

enter image description here

1 个答案:

答案 0 :(得分:1)

您提出的设计存在严重缺陷。每次添加新类别时,都必须重新设计数据库。通过简单地添加记录来实现这一点会更好。我建议这个设计。

表产品将具有ProductID,名称,而不是其他。

表类别将具有CategoryID,名称,而不是其他。

表属性将具有AttributeID,Type和value。例如,类型为颜色,值为蓝色。

然后你需要表来建立多对多的关系。一个是产品和类别之间,另一个是产品和属性之间。

要真正规范化此设计,您可以为AttributeTypes创建一个单独的表,并在Attribute表中使用外键引用。

编辑从这里开始

上面的模式会导致属性表包含如下记录:

1|colour|blue
2|colour|red
3|size|small
4|size|medium

由于重复的字符串颜色和大小,这没有规范化。要对此进行规范化,您将拥有一个AttributeType表,其中包含AttributeTypeId字段,Type Records将如下所示:

1|colour
2|size

您的属性记录将成为:

1|1|blue
2|1|red
3|1|small
4|1|medium

我实际上是这样做的。我只是在原来的答案上懒得。