需求
电商商品有多规格属性可选择下单,做电商的逃不了这个需求,行业有专业术语:SKU,SPU等,具体含义老板们可自行百度!具体如下图:
设计
先上表结构:
- 商品属性名表 eshop_comm_attribute_key:例如上图中的 款式,颜色…
- 商品属性值表 eshop_comm_attribute_val : 例如上图中的A款,B款,白色,圆形…
- 商品规格表 eshop_comm_sku : 记录商品每种规格的库存,价格,图片等信息
- 商品规格展示表 eshop_comm_attribute_show :商品要展示哪些规格
- 商品表 eshop_commodity
- 商品订单表 eshop_order
这里的商品规格展示表 ,是由于该功能是后加,为了不影响之前的逻辑的没有直接修改添加到商品表中,根据需求可自行处理;
其中:
商品规格展示表 eshop_comm_attribute_show 中的attribute_list 存储属性值串(2,3,4),
商品规格表 eshop_comm_sku中的comm_specs 存储的也是属性值串(2,3)
用商品ID,页面选择的属性拼成属性值串在商品规格表中查询对应的商品规格的价格,库存等信息;
所以商品规格表 eshop_comm_sku得包括每种规格的数据,例如上图中的款式,颜色,形状三中属性对应的属性值会有16(4 * 2 * 2)中规格,则规格表得保存16条数据;
还有一个问题:某个属性没有库存,属性标签置灰不可点,例如C款没有库存,不管白色,黑色,还是方形,圆形,C得标记上没有库存,方便前端页面置灰, 同样的黑色没库存,不管哪个款式以及哪个形状都没有了黑色,黑色标签需置灰不可选择,等等!
这里的设计思路是这样的:找出规格表中库存是0的规格,该规格中的属性值不在非0的规格中出现,则该属性值可标记上库存为0,做置灰处理!具体见下图,属性值 1对应的是款式A, 已没有库存,库存可标记为0!
此仅是简版处理,商品的SPU,SKU可自行深究!