一般情况下我们使用5张表就可以解决基本的需求了:
-
商品分类表:category
-
商品表(即SPU表):表:product
-
商品规格表(即sku表):product_specs
-
属性key表:attribute_key
-
属性value表:attribute_value
[](()具体设计
[](()概述
spu表和sku表实现不同商品的存储:spu表使用attribute_list字段保存属性集合,查询时使用product_id和product_specs去sku表中获取的具体的单品信息。 spu表中可以增加一些商品的公共信息字段,例如名称、发布的商家、发布日期、上架状态; sku表中增加一些每个单品不同的字段,比如不同的单品有不同图片和名称或者详情说明等等,反正根据业务进行扩展
核心思路就是把弹性字段使用json存储,这样设计的优点是数据表结构稳定,不用在商品增加属性后增加字段, 缺点是商品数据的解析复杂,弹性字段需要在业务代码中进行处理,增加了业务代码的复杂度。
[](()商品分类表:tb_product_category
该表主要是描述商品的分类。此表采用无限层级树状数据结构,程序使用递归算法来遍历分类下的所有子分类,pid是父级分类, paid=null时说明是根节点, 属于一级类别;
属性:id,pid,name等
[](()商品表表(即spu表):tb_product
存储商品信息。表中关键字段是category_id和attribute_list两个字段:
-
category_id:记