具有不同属性的多类产品的数据库架构

时间:2016-10-20 15:47:14

标签: mysql database-design e-commerce entity-attribute-value

我搜遍了所有的stackoverflow,但我似乎无法找到问题的答案。

此问题与电子商务网站有关

问题在于:

特定类别的产品具有一组特定的属性。例如,计算机具有Ram,CPU,屏幕尺寸等 和衬衫有尺寸,颜色等等

所有产品都有共同的属性(例如价格和库存等)。

但是,如何管理特定于其类别中每个产品的属性?

首先,我为列出所有属性的产品的每个类别创建了一个表,但是我在使用其属性过滤每个产品时遇到了问题。我确信这不是一个好主意,因为我必须在获得新类别时创建一个新表。例如,如果我想在我的网站上出售书籍,我需要添加书籍表

什么方式是“最佳实践”?

以下是我所做的一个例子:

产品(idproduct,名称,价格,......(其他属性))
category(idcat,name,idParentCategory)
ParentCategory(idPcat)
PC(IDPC,RAM,CPU,screenSize..etc)
衬衫(idShirt,大小,颜色)
裤子(idPant,腰围,颜色)

这里的问题是我无法在产品表及其类别之间建立连接以提取属性。

有更好的解决方案吗?

提前感谢您的帮助

2 个答案:

答案 0 :(得分:1)

  

所有产品都有共同的属性(例如价格和库存等)。

使用适当的真实生活密钥为此创建一个表格,例如EAN(考虑使用第三方数据源)。

  

但是,如何管理其类别中每种产品的特定属性? ...如果我想在我的网站上出售书籍,我需要添加书籍表

是的,书籍特有的属性会在这里。请务必创建对“所有产品共有的属性”表的引用,例如确保EAN对应有效的ISBN。还要考虑一些图书属性可能与其他类似产品相同,因此您可以在数据库中建模各种子类型。

答案 1 :(得分:0)

解决问题的一种方法是,如果我理解您的问题,就是将属性映射到类别表,因为它们是特定类别而非特定于项目。 这样,您就拥有: 产品(idproduct,名称,价格......(类别属性值)) category(idcat,name,idParentCategory,(category attributes))

要将产品映射到他们的类别,您只需要一张包含两个外国PK的表格: productOfCategory(idprodFK,idcatFK)

这样您就可以将产品映射到相应的类别并验证产品'值类别'属性。

或者您将值数组保留在productOfCategory关系中。 例如,对于作为计算机的产品,因此也就是计算机类别的产品,您拥有productOfCategory(ComputerProductID,ComputersCategoryID," 3.0 GHz,6GB Ram,.....&#34 ;)