具有属性的产品的数据模型,每个属性组合具有不同的价格

时间:2019-01-01 17:02:59

标签: mysql sql database database-design

我正在使用关系数据库(MySQL)开发通用电子商务解决方案,并且我想管理这样的产品:

  • 每个产品(例如木材塑料)将具有多个属性(例如,厚度宽度高度颜色)。
  • 依次,每个属性可以具有多个(例如,厚度为 3 mm 5 mm 蓝色红色用于颜色等),在每种情况下价格都不同

到目前为止,我目前的方法依靠4个表:

  • 产品( id ,名称,描述)
  • 属性( id ,名称,描述,类型)
  • attribute_values( id attribute_id ,值)
  • attribute_product( attribute_id product_id ,价格)

借助此数据模型,我可以很好地组合产品和属性,例如:

  • 定义一个名为wood产品,该产品具有2个属性thicknessheight),而依次具有{{1 }}和3 mm的厚度选项,5 mmblue的颜色选项...

问题来自于价格计算,因为如果我在 attribute_product 数据透视表中声明了 price ,我仍然不知道为该值选择了哪个值该特定属性和产品。

如何修改数据模型,以便能够以某种方式“ 链接”具有属性值的产品? 预先感谢。

1 个答案:

答案 0 :(得分:1)

对,像attribute_product这样的链接表仅将1个实例链接到1个实例,并且您的产品可以具有多个属性,因此该模型不起作用。

您所说的attribute_product是大多数人所说的产品。是有代价的东西。所以我只称其为“产品”。您所说的产品可能是product_categories。

因此,属性表将是其子表。

  • product_categories(id,desc)-例如“木头”
  • 产品(id,名称,desc,category_id,价格)-例如“木头:3x5mm红色”
  • 属性(id,名称,desc,类型)-例如。 “厚度”
  • product_attributes(id,product_id,attribute_id,value)-每个产品多行;例如。 “ 3mm”“红色”