关于从淘宝数据结构来看电子商务中商品属性设计

昨天看了 活雷锋从淘宝数据结构来看电子商务中商品属性设计,对表之间的结构关系不是很清楚于是就整理了下相关结构

图1

图1中,可以确定商品由分类+属性组成,属性又分关键属性,销售属性,非关键属性等,具体的从淘宝数据结构来看电子商务中商品属性设计有说明,这里需要注意的是属性是一个多层结构(树型)如分类“台式机”的属性:"品牌->系列->型号".  数据库中有属性名(key)表跟属性值表(Value)表,参考下面的图2。

[分类属性名]与[分类属性值]有两个关联,一个是[分类属性值]到[分类属性名]的N:1,另外一个是[分类属性名]到[分类属性值]的1:(0..1),这个设计相当绕 (-_")

图2 数据表关系

下面是具体的数据演示,这里输入了“洗发水”跟“台式机”的相关数据

 [商品分类].分类编号=2 (台式机) --分类编号--> [分类属性名].属性名编号=5 (品牌) --属性名编号-->[分类属性值].属性值编号={11,12}(宏基,戴尔)

[分类属性值].属性值编号=11(宏基) --属性值编号--> [分类属性名].属性名编号=6(型号 -- 宏基)--属性名编号-->[分类属性值].属性值编号=13(AcerPower F1(C4 2.5G))

注意:上面两个过程后面多是  拿[分类属性名].属性名称编号 匹配  [分类属性值].属性名编号 字段

总的效果是

台式机
--品牌
----型号←宏基
-------AcerPower F1(C4 2.5G)
-------AcerPower S230 P308056NS30
----系列←戴尔
-------Dimension型号←Dimension系列
---------Dimension 9200(Q210610)
---------Dimension C521(N211233)
-------Inspiron型号←Inspiron系列
---------Inspiron 530(R210101N)

由上可以见属性本质是树型结构,那么为什么不直接放在一张表中呢,主要考虑可能是每个属性包含其他字段(如单选,多选,下拉,radio,关键属性,必填属性等)
分开后属性值表的数据就更加“纯洁了”,另外“分类属性值”表数据的父子关系不能直接在“分类属性值”表加ParentId字段来实现,因为直接这样做就无法体现“值”是单选或多选等性质因为这些字段在“分类属性名”表上定义,于是属性值的父子关系又专而依赖“分类属性名”表的“父属性名编号”来体现,同时也重用了该属性是单选或多等其他字段定义

图3

图4

图5

原文地址:https://www.cnblogs.com/wdfrog/p/2025633.html