商品规格的表的设计

摘取京东的规格设计

2296d5ba7a6196131c7c85a97f5585c9.png

总结:

商品的规格设计是这样的设计每个的规格有一个分组,分组下为具体的规格项以键值对的方式进行存储商品的规格

商品规格分组

|----规格项:规格值

|----规格项:规格值

|----规格项:规格值

商品规格分组

|----规格项:规格值

|----规格项:规格值

|----规格项:规格值

模板分页显示的效果

商品规格参数模板分页显示效果

解决规格存储的方案有两种

解决方法一:

1.这是采用传统的表和表之间的关系进行表的设计

1.从商品分类表每个分类有对应一个多个规格分组,为一对多的关系

2.规格的分组下有多个的规格项,为一对多的关系

现在数据对应三个表如果将商品等信息展示在页面上,那么商品表还要和规格项表产生关系,商品对应多个的规格项需要中间表进行关联

此时观看表的设计图,在进行表的设计的时候表应该是一个表为中心,向外扩散,现在出现了网状的关系,这个在表的设计的时候需要避免的,这样的表设计会为业务的实现带来很多的玛法,比如现在的要进行数据显示到页面那么的显示sql语句就会及其的复杂

有规格参数具体信息,显示具体商品信息和规格参数信息:

Selec … from 商品表 left join 规则参数值表

on…. 没有规格参数具体信息,显示商品信息和规格参数模板信息:

Select …from 商品表 left join 商品类型表 on … Left join 商品规格分组表 on ….

05bd1b018c761254bc99c15d65416196.png

这种表结构存在很大的问题

1.我们需要创建多张表来维护规格之间的关系,照成了逻辑的复杂化

2.进行查询时sql语句会变得更加的复杂

3.规格的参数是商品的几十倍,一个商品的规格是很多项的,在后台进行数据的处理的时候增加的业复杂度,而且查询量十分的巨大,效率十分的慢

解决方法二:

发现由于所有商品的规格参数信息格式都是一样

我们可以使用json进行键值对的形式存储到数据库内,回显的时候只需要根据指定的商品ID查询到对应规格的信息

简化的表的设计,和的sql语句的复杂度

比如下,将规格使用这样的分组进行设置

group是组

params:存储的是具体的规格参数

注意这里采用的是二维json数组

 {
"group": "主体",
"params": [
 {
"k": "品牌",
"v": "苹果(Apple)"
 },
 {
"k": "型号",
"v": "iPhone 6 A1589"
 },
{
"k": "智能机",
"v": "是"
 }
 ]
}
]

商品规格分组

|----规格项:规格值

|----规格项:规格值

|----规格项:规格值

商品规格分组

|----规格项:规格值

|----规格项:规格值

|----规格项:规格值

好处:

不需要做表之间复杂的关系。 如果要求新添加的商品规格项发生改变,之前的商品不变是很简单的。只需要改变 json 串 的格式

此时再看表和表之间的关系

81052bdb8a164e7e0580071cd26f3566.png

如果要查询一个的商品的规格不需要知道模板具体是什么只要去规格表中拿到即可(存储的都为JSon对象),在页面使用JSON进行显示即可

Logo

电商企业物流数字化转型必备!快递鸟 API 接口,72 小时快速完成物流系统集成。全流程实战1V1指导,营造开放的API技术生态圈。

更多推荐