最近在做一个中小型购物商城,商品的种类繁多,每一种商品具有不同的规格,不同的规格有相应的价格和库存;
这个设计的核心难点在于:不同商品具有不同的属性,如何设计通用的存储方案?
1. 先做一下专业术语解释:spu和sku
这里拿iphone6s举例,它身上有很多的属性和值, 比如
毛重: 420.00 g
产地: 中国大陆
容量: 16G, 64G, 128G
颜色: 银, 白, 玫瑰金
spu 指的是商品(iphone6s),spu属性就是不会影响到库存和价格的属性, 又叫关键属性,与商品是一对一的关系,比如
毛重: 420.00 g
产地: 中国大陆
sku指的是具体规格单品(玫瑰金 16G),sku属性就是会影响到库存和价格的属性, 又叫销售属性,与商品是多对一的关系,比如
容量: 16G, 64G, 128G
颜色: 银, 白, 玫瑰金
所以iphone6s则会生成 3 * 3 = 9 个 sku
2. 下面进入主题
数据表结构图
上面这张图是我项目中用到的商品相关的几张数据表, 请只关注有数据值的字段,其它为业务需要,一共包含如下5张表:
商品分类表--mmall_category
商品表--------mmall_product
商品规格表--mmall_product_specs
属性key表---mmall_attribute_key