在数据库中干净地代表电子商务产品和变体

Dav*_*ero 9 ruby sql database activerecord ruby-on-rails

我有一个我正在建设的电子商务商店.我正在使用Rails/ActiveRecord,但实际上没有必要回答这个问题(但是,如果您熟悉这些内容,请随意回答Rails/AR).

商店的要求之一是它需要代表两种类型的产品:

  1. 简单的产品 - 这些产品只有一个选项,如乐队的CD.它有基本的价格和数量.
  2. 有变化的产品 - 这些产品有多种选择,例如有3种尺寸和3种颜色的T恤.尺寸和颜色的每种组合都有自己的价格和数量.

我过去做过这种事,做了以下事情:

  • 产品表,其中包含产品的主要信息(标题等).
  • 变量表,其中包含每种变体的价格数量信息.产品 has_many 变种.
  • 对于简单的产品,它们只有一个关联的Variant.

有没有更好的方法可以做到这一点?

Jos*_*ger 8

几年前我就开始研究电子商务产品,我们按照你描述的方式做了.但我们又增加了一层来处理同一产品的多个属性(大小和颜色,就像你说的那样).我们分别跟踪每个属性,并且我们有一个"SKU"表,其中列出了每个产品允许的每个属性组合.像这样的东西:

attr_id   attr_name  
1         Size  
2         Color  

sku_id    prod_id    attr_id    attr_val  
1         1          1          Small  
1         1          2          Blue  
2         1          1          Small  
2         1          2          Red  
3         1          1          Large  
3         1          2          Red  
Run Code Online (Sandbox Code Playgroud)

之后,我们添加了库存跟踪和其他功能,我们将它们绑定到sku ID,以便我们可以单独跟踪每个功能.


Joh*_*ohn 0

你的方式看起来很灵活。这将类似于我的第一次剪辑。