业务思想:
表关系:
分类表 <= 商品表 <= SKU表(库存表)
分类表 <= 属性名 <= 属性值
商品表 <= 商品和属性关系表 => 属性名|属性值
业务逻辑:
1.同一商品不同SKU库存和售价不同.
2.不同类型的商品具有不同的属性名和属性值(如汽车和服饰),所以属性需要支持后期添加和维护.
3.在某个商品分类下通过属性筛选商品.
4.商家某件商品的销量统计,该件商品内几个不同SKU的销量统计.
5.更多...
分类表:(商品分类编号, 分类名称, 父分类编号)
(1, 男装, 0)
(2, 裤子, 1)
(3, 外套, 1)
(4, 内裤, 1)
(5, 袜子, 1)
(6, 食品, 0)
(7, 蛋糕, 6)
(8, 水果蛋糕,7)
(9, 奶油蛋糕,7)
(10, 饼干, 6)
商品表(spu表):(商品编号,商品编辑的版本号,商品名称, 商品分类编号, 卖家编号, SPU销量, 评论数)
(1, v1.0 ,'裤子名', 2, 1, 0)
(2, v1.0 ,'外套名', 3, 1, 0)
(3, v1.0 ,'内裤名', 4, 1, 0)
(4, v1.0 ,'袜子名', 5, 1, 0)
SKU表(库存表):(SKU编号, 商品编号, 商品编辑版本号, SKU属性, 价格, 库存, SKU销量)
(1, 1, [1:1,2:3], v1.0 , 99, 400, 0) 其中 [1:1,2:3] 表示 "颜色为黑色,尺码为X",
(2, 1, [1:1,2:4], v1.0 ,99, 200, 0) 其中 [1:1,2:4] 表示 "颜色为黑色,尺码为XL"
(3, 1, [1:2,2:3], v1.0 ,99, 300, 0) 其中 [1:2,2:3] 表示 "颜色为白色,尺码为X"
(4, 1, [1:2,2:4], v1.0 ,99, 100, 0) 其中 [1:2,2:4] 表示 "颜色为白色,尺码为XL"
(5, 1, [1:2,2:3,4:8], v1.0 ,99, 300, 0) 其中 [1:2,2:3] 表示 "颜色为白色,尺码为X" ,价格为70000
(6, 1, [1:2,2:4,4:8], v1.0,99, 100, 0) 其中 [1:2,2:4] 表示 "颜色为白色,尺码为XL" ,价格为30000
上面只列出商品1这个分类的4个SKU.
即【属性名颜色】:【属性值白色】,【属性名尺码】:【属性值尺码x】,【价格】:【价格70000】
这里的sku表可以最为库存表,如果需求复杂,可以基于sku表进行库存表的扩展。
库存表是一个可选的扩展,如果需要扩展,他包含的字段可以是
(库存编号,skuid,sku价格,sku的浏览量,sku的点击量,sku的库存,sku的库存告警量,sku的预减库存,sku的销量)
上面商品表加入版本号的概念,可以方便订单、营销、售后对修改过的商品都可可以进行正向或逆向的朔源。
属性名:(属性名编号, 属性名, 商品分类编号, 父属性编号)
(1, 颜色, 2, 0)
(2, 尺码, 2, 0)
(3, 品牌, 2, 0)
(4, 价格, 0, 1)
上面只列出裤子这个分类的3个属性名.
(注意:价格也是商品的一个属性,比如不同颜色的价格是不一样的,所以,颜色下面有一个价格的属性).
属性值:(属性值编号, 属性值, 属性名编号)
(1, 黑色, 1)
(2, 白色, 1)
(3, X, 2)
(4, XL, 2)
(5, 七匹狼, 3)
(6, 九牧王, 3)
(7, 70000, 4)
(8, 30000, 4) 注解:这里70000以分为单位,表示钱。
上面只列出裤子这个分类的6个属性值(注意:价格也是商品的一个属性,一切能给商户编辑的皆为属性,
如果你的库存值也是可以给商户编辑的,那也是属性,因为这不是严格的库存,没有严格进销存的概念,
也就是一个值而已,哈哈).
商品和属性关系表:(自增编号, 商品编号,商品版本号, 属性名编号, 属性值编号)
(1, 1, v1.0 , 1, 1) 商品1颜色为黑色
(2, 1, v1.0 , 1, 2) 商品1颜色为白色
(3, 1, v1.0 , 2, 3) 商品1尺码为X
(4, 1, v1.0 , 2, 4) 商品1尺码为XL
上面只列出商品1的4个属性关系.
商品和属性筛选表:(商品编号, 商品版本号 , 商品具有的属性值编号)
(1, v1.0 ,[1,2,3,4])
用SQL全文检索实现筛选.
如:
select * from 商品表
inner join 商品和属性筛选表
on 商品表.商品编号 = 商品和属性筛选表.商品编号
where 商品表.商品分类编号 = 2 and 商品和属性筛选表.商品具有的属性值编号
MATCH '1 3'order by 商品表.评论数 DESC LIMIT 10 OFFSET 20;
商品搜索表:(商品编号, 商品标题和内容)(1, [无需词典,二元分词])用SQL全文检索实现搜索.
参考:
https://yq.aliyun.com/php/40217?spm=a2c4e.11155472.blogcont.24.1a4902efppQypQ
https://yq.aliyun.com/php/4843
https://www.cnblogs.com/Leo_wl/p/4567329.html