对产品变体组合进行建模

问题描述 投票:0回答:1

我正在构建产品数据库,其中一个产品可能有多种变体,例如单个产品的尺寸、颜色、形状等。我遇到的棘手部分是数据库的结构,允许我链接依赖项,例如“红色”“M”“T 恤”或“蓝色”“XS”“裤子”在这种情况下是颜色和尺码的变体。我希望这些变体是通用的,所以我避免使用

sizes
shapes
colors
表格等。有些项目甚至可能根本没有任何变体,或者只有一个,例如只是颜色。

理想的形状应该是这样的

products

id 名字
1 T恤
2 裤子

variants

id 名字
1 颜色
2 尺寸

variant_values

id variant_id 名字
1 1 蓝色
2 1 红色
3 2 XS
4 2 S
5 2 M

product_variants

如果我提供已经与特定变体有关系的

variant_id
,我可能甚至不需要
variant_value_id

id 产品_id variant_id variant_value_id
1 1 1 1

product_variants
结构允许我拥有“蓝色T恤”记录,但我如何让这些
variant_value_id
一起工作,以便我可以存储蓝色M T恤或红色XS裤子等?

这是我最好的尝试 enter image description here

我从这些线程中激发了我的模型......

...但找不到适用于我可以将变体组合在一起的情况的答案。

database database-design
1个回答
0
投票

定义:

  • 产品:主要产品
  • 变体:主要产品的变体,具有自己的属性值组合
  • 属性:用于区分的选项名称,例如尺寸
  • AttributeValue:要区分的选项值,例如大

设计数据库表:

  • 创建表
    attributes
    ,其中包含 id、name 等列
  • 创建表
    attribute_values
    ,其中包含 id、attribute_id、name 等列
  • 创建表
    products
    ,其中包含 id、name 等列
  • 创建表
    product_variants
    ,其中包含 id、product_id、attr_value_ids 等列

这只是一个非常基本的例子。您的设计可能取决于业务规则、企业架构、代码/数据库优先等上下文。然而,这个简单的设计是您问题的一个答案。

最终创建变体取决于属性值的选择(例如中、大、蓝色、红色)。站在巨人的肩膀上,使用笛卡尔积这样的数学,根据属性值的选择生成所有可能的变体。有很多关于如何实现产品变体的示例。我建议看看开源项目。

© www.soinside.com 2019 - 2024. All rights reserved.