目录
目录
1、库存表设计
商品属性表:由属性名与属性值共同构成商品的一个属性,属性名 atrr_name_id 是product_attr_name的一个外键,而atrr_value_id 是product_attr_value一个外键。
因为不同的商品它们的属性有很多不同,共同的部分抽象进商品表中,不同的部分可以存储到这个product_attr表中。
商品属性名表:对商品属性进行抽象,抽象元数据,属性名、是否sku、是否颜色、是否支持搜索、是否启用、属性类型
商品属性值表:存储对应商品属性名相应的属性值,如果是单选、多选,则是多个值
商品sku表:存储对应商品sku信息
1.1、案例讲解
有一个product_id=1的商品,它有两种规格: 红色:L款、红色:M款需要录入库存
我们要查询sku_id=1的具体规格相关参数,
得到sku_attr_ids为"1:2",我们将其处理成一个数组[1,2]
SELECT
n.attr_name,
v.attr_value_content
FROM
product_attr t
LEFT JOIN product_attr_name n ON t.attr_name_id = n.attr_name_id
LEFT JOIN product_attr_value v ON t.attr_value_id = v.attr_value_id
WHERE
t.attr_id IN ( 1, 2 );
执行结果如下:
1.2、优势与劣势
1.2.1 优势
1、对sku有比较好的支持,可以从多个属性角度来自定义规格、库存、价格
2、对商品属性进行统计比较方便
1.2.2 劣势
1、表设计过于复杂了,查询一个商品多的规格库存,需要联表查询至少4张表
2、商品评论表设计
例如,有这么一个评论场景:
用户1:这是一个比较好的商品
用户2:你骗人,我用了,效果不好
用户1:真的,你是不是使用方法不对?
用户3:我不想评论