mysql - 为产品变体设计数据库

标签 mysql database-design

我想为产品变体建模(不是选项或属性,只是变体)。

因此,每个变体本身就是一个产品。适用于产品所有变体的一般信息存储在另一个表中(例如:文本描述)。好的,我认为这很好,不需要进一步更改。

对于相关选项(例如颜色:红色,尺寸:小),我创建了两个变体。

变体 1:

diagram 1

表格的简短描述:

  • 选项:存储所有可用的选项(颜色、尺寸、 Material ……)
  • 值:存储所有可用值(红、蓝、绿、小、中、大、铁、木)
  • option_value:存储选项和值的所有可能组合(颜色:{red,blue,green},尺寸:{small, medium, large},...
  • product_option_value 现在将产品与其选项相关联(例如:color:red, size:small, product_id:1;color:blue, size:small, product_id:1)

好的,我认为这会非常有效 - 左侧是用于构建 UI 的元数据(哪些选项、哪些值、哪些组合)的描述 - 右侧是与产品的链接。

但是有一个问题......描述了选项和值的可能组合以构建 GUI 并且可以通过编程方式对其进行验证,但数据库无法进行验证。

因此我创建了变体 2:

diagram 2

现在我不确定第二种解决方案是否更好。你怎么看?有改进的余地吗?

最佳答案

如果您想将product_option_value限制为option_value中已经存在的值,那么是的,第二种模型更好。

但是,此模型允许在多个选项之间共享单个值(例如,“red”可以同时是“color”和“size”)。我猜这不是你想要的,在这种情况下模型应该类似于:

enter image description here

关于mysql - 为产品变体设计数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11670883/

相关文章:

Mysql检查。一天的记录与不同日期的记录 'Same-Store Sales'

mysql - 存储过程 : Get month

mysql - 将父子数据复制到另一个具有不同父子id的表

mysql - 在数据库中存储项目属性的组合

mysql - 数据库架构中的文件夹

mongodb - 在 MongoDB 中建模用户到项目的数据库

php - 错误: Object of class PDO could not be converted to string

php - Laravel 使用关系显示 View ,加入

sql - 主键与聚簇索引的关系

SQL Server 数据库设计与外键混淆