我特别关注了有关该主题的其他讨论:
Representing ecommerce products and variations cleanly in the database
和
DB schema help, linking variations of products
但我发现它们缺乏而且过于简单。
我正在寻找一种生产质量架构,以支持产品和产品的变化,如颜色,尺寸,左/右手,容量等。
另外,我需要支持产品套件,相关产品,相关产品。 此外,我需要支持产品系列/款式,例如风格中的所有产品,如“windsor”风格的水龙头和淋浴头。
如果您愿意分享如此有价值的东西,我们将不胜感激。
由于
答案 0 :(得分:2)
如果您打算将所有这些放入关系数据库(您的SQL标记让我这么认为),您需要做好计划。您应该留意具有该领域经验的数据库管理员(DBA),并且可以与您一起详细阅读您的规范。
如果您没有预先确定需要做什么的规范,您可能需要查看基于文档的数据库,例如couchdb,它将为产品实体的数据和属性中的变体提供更大的灵活性。管理/规范化数据的工作更多地在应用程序的代码中,然后在关系数据库中。
答案 1 :(得分:2)
根据我的经验,您所寻找的(简单起见)是一个多表关系结构。根据您提供的信息,我已经制定了以下草案
产品表
用于维护产品清单
[product]
- id (BIGINT, AUTO_INC, PK, NOT NULL)
- title (VARCHAR(255), INDEX, NOT NULL)
产品属性表
关于您的属性的一切独特之处,它们可能有或没有共同之处(即大小颜色,左/右,容量等)
[product_property]
- id (INT, AUTO_INC, PK, NOT NULL)
- title (VARCHAR(255), INDEX, NOT NULL)
产品属性值表
此表是您告诉它产品的属性具有什么价值的地方(即此产品10234-3为黑色,容量为25)。我使用BLOB类型作为值,因为问题是开放的。这是数量编号还是三页文字说明。您可以调整为necissary以满足您的需求。您也可以使用此表来处理依赖关系,它不需要是product_id和property_id的唯一组合,因为您可能有一种或多种颜色,或者它可以属于多个组等。
[product_property_value]
- product_id (BIGINT, FK => product.id, NOT NULL )
- property_id (INT, FK => product_property.id, NOT NULL)
- value (BLOB)
如果您有任何疑问或需要澄清,我会尽我所能帮助您。它非常基本,应该符合您的需求。