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

时间:2010-01-11 23:51:54

标签: sql ruby-on-rails ruby database activerecord

我正在建设一家电子商务商店。我正在使用Rails / ActiveRecord,但这并不是回答这个问题的必要条件(但是,如果您熟悉这些内容,请随时回答Rails / AR)。

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

  1. 简单产品 - 这些产品只有一个选项,例如乐队的CD。它有基本的价格和数量。
  2. 有差异的商品 - 这些产品有多种选择,例如有3种尺码和3种颜色的T恤。尺寸和颜色的每种组合都有自己的价格和数量。
  3. 我过去做过这样的事情,并做了以下事情:

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

    我有更好的方法吗?

2 个答案:

答案 0 :(得分: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  

稍后,我们添加了广告资源跟踪和其他功能,我们将它们绑定到sku ID,以便我们可以单独跟踪每个功能。

答案 1 :(得分:0)

你的方式似乎非常灵活。这与我的第一次切割类似。