当我设计我的电子商务项目,其中产品可以具有多个属性(颜色,大小)时,我通常创建公共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:// 我知道这是一个低质量的"问题,关于产品 - 属性关系的问题太多了,但我找不到这些设计的优点或缺点。
答案 0 :(得分:3)
我不会说它更好。
不同的设计有不同的优点和不同的缺点
您应该选择最适合您需求的产品
根据经验,查找表可以节省存储空间并允许更好的规范化,而平面表允许更简单(但不总是更快!)的搜索查询。
您需要存储的数据越多,就越有理由保持其正常化并正确编制索引。 对于大量数据,我会比你更进一步,并保留一张颜色表和一张尺寸表。
答案 1 :(得分:0)
SKU必须是独一无二的,并且所有购物Feed都使用它,因此它必须在那里。 我们使用Magmi和许多可配置产品(ProductVariants)在Magento工作。 每个SKU都有自己的产品信息和与ProductVariants的关系(如果适用)。
它是一个更清洁,更简单的导入/导出和导入表格。出口是你真正想要用电子商务做的事情。
以这种方式看待它,拥有两个女人很有趣,但保持一个就足够了。