在数据库中清晰地表示电子商务产品和变体

12
我正在建立一个电子商务店铺,使用的是Rails/ActiveRecord,但这并不是回答这个问题所必需的(然而,如果您熟悉这些内容,请随意按照Rails/AR的术语来回答)。
商店的一个要求是它需要代表两种类型的产品:
1. 简单产品 - 这些是只有一个选项的产品,例如乐队的CD。它有一个基本价格和数量。 2. 带有变化的产品 - 这些是有多个选项的产品,例如一件有3种尺码和3种颜色的T恤。每种尺码和颜色的组合都有自己的价格和数量。
我过去做过这样的事情,并采取了以下步骤:
1. 有一个“产品”表,其中包含产品的主要信息(标题等)。 2. 有一个“变体”表,它保存每种变体的价格和数量信息。 "产品"具有多个"变体"。 3. 对于简单产品,它们只会有一个关联的“变体”。
是否有更好的方法可以做到这一点?
2个回答

11

我几年前曾经参与过一个电商产品的开发,我们使用了你所描述的方式。但是我们新增了一层来处理同一产品上的多个属性(例如尺寸和颜色)。我们单独跟踪每个属性,而且我们有一个“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绑定在一起,以便我们可以单独跟踪每个商品。


如果产品没有任何属性怎么办?attr_id会是空值吗?还是你确保每个产品至少有一个属性? - Joe Van Dyk
1
在这种情况下,该产品在SKU表中没有任何行。 - Josh Yeager
通配符怎么办?“Small”的一个变体,其中大小未定义? - Chris Pillen
嗨,Josh,这不是“实体属性值”模式吗?我想使用它,但你能在这里检查一下我的问题吗?(http://stackoverflow.com/questions/31827767/asp-mvc-list-ecommerce-product-with-dynamically-changing-specifications) - Shaiju T

0

你的方法看起来非常灵活。这与我的第一次尝试类似。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接