(数据库设计)。产品属性

时间:2015-06-16 11:55:18

标签: database-design e-commerce

当我设计我的电子商务项目,其中产品可以具有多个属性(颜色,大小)时,我通常创建公共Product实体,其中包含有关产品和ProductVariant实体的一般信息,其中包含属性和FK到产品

示例(这些只是简单的示例,通常属性(或库存等)存储为FK):

**Product table**
Id     Name       SKU  
1      T-Shirt    sku_1 

**ProductVariant**
Id   ProductID   Name (Optional)      Color      Size     Stock      Barcode
1    1            First               black      XL       50         bar_1
2    1            Second              white      XXL      35         bar_2
3    1            Third               yellow     S        60         bar_3

但是有些开发人员以不同方式创建此功能:他们创建单个实体Product,其中包含有关产品的所有信息(包含所有属性),并在显示时按sku分组它,像这样:

Id    Name      SKU      Color      Size     Stock      Barcode
1     T-Shirt   sku_1    black      XL       50         bar_1
2     T-Shirt   sku_1    white      XXL      35         bar_2
3     T-Shirt   sku_1    yellow     S        60         bar_3

为什么第二种方式比变种更好?将所有值存储到单个表中可能有一些优点吗?

PS:// 我知道这是一个低质量的"问题,关于产品 - 属性关系的问题太多了,但我找不到这些设计的优点或缺点。

2 个答案:

答案 0 :(得分:3)

我不会说它更好。
不同的设计有不同的优点和不同的缺点 您应该选择最适合您需求的产品 根据经验,查找表可以节省存储空间并允许更好的规范化,而平面表允许更简单(但不总是更快!)的搜索查询。

您需要存储的数据越多,就越有理由保持其正常化并正确编制索引。 对于大量数据,我会比你更进一步,并保留一张颜色表和一张尺寸表。

答案 1 :(得分:0)

SKU必须是独一无二的,并且所有购物Feed都使用它,因此它必须在那里。 我们使用Magmi和许多可配置产品(ProductVariants)在Magento工作。 每个SKU都有自己的产品信息和与ProductVariants的关系(如果适用)。

它是一个更清洁,更简单的导入/导出和导入表格。出口是你真正想要用电子商务做的事情。

以这种方式看待它,拥有两个女人很有趣,但保持一个就足够了。