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

标签 mysql sql database database-design

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

  • 每种产品(例如木材塑料)都会有多个属性 strong>(例如厚度宽度高度颜色)。
  • 反过来,每个属性可以有多个(例如,厚度为3毫米5毫米蓝色红色颜色等),每种情况都有不同的价格

到目前为止一切顺利,我当前的方法依赖于 4 个表:

  • 产品(id、名称、描述)
  • 属性(id、名称、描述、类型)
  • attribute_values(idattribute_id、值)
  • attribute_product(attribute_idproduct_id、价格)

通过这个数据模型,我可以很好地将产品和属性结合起来,例如:

  • 定义一个名为 wood产品,它具有 2 个属性(厚度高度) >),其厚度又具有 3 毫米5 毫米 选项,以及颜色的蓝色红色 选项。 ..

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

如何修改数据模型,以便能够以某种方式将产品与属性值“链接”? 提前致谢。

最佳答案

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

您所说的 attribute_product 就是大多数人所说的产品。这是有价格的东西。所以我称之为“产品”。您所说的产品可能是product_categories。

因此属性表将是它的子表。

  • product_categories(id,desc)——例如。 “木头”
  • 产品(id、名称、desc、category_id、价格)——例如。 “木头:3x5mm 红色”
  • 属性(id、name、desc、type)——例如。 “厚度”
  • product_attributes (id, Product_id, attribute_id, value) -- 每个产品多行;例如。 “3毫米”“红色”

关于mysql - 具有属性的产品的数据模型,每个属性组合具有不同的价格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53997320/

相关文章:

python - 无法使用存储过程pyodbc SQL SERVER 创建数据库

MySQL:从最近的组中获取最旧的记录

java - 从日期减去一小时 SQL

mysql - 合并两个结果集

sql - 通过sql对分区计数不同

mysql计算唯一用户列表的时差

sql - 稀疏连接中的 PostgreSQL 慢 WHERE 子句

mysql - 选择一个表中的所有行,只要该 id 不代表第二个表中的空值

php - CronJob 在午夜不工作,但如果我将它设置为每 5 分钟一次,它就会工作

php - 很多查询 - 慢?