1 / 14
文档名称:

数据库设计之商品表分析.docx

格式:docx   大小:779KB   页数:14页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据库设计之商品表分析.docx

上传人:科技星球 2022/3/19 文件大小:779 KB

下载得到文件列表

数据库设计之商品表分析.docx

相关文档

文档介绍

文档介绍:数据库设计之商品表分析1
 
 
1. 思路
一个全品类的电商网站,因此商品的种类繁多,每一件商品,其属性又有差别。为了更准确描述商品及细分差别,抽象出两个概念:SPU和SKU。
SPU和SKU联系
SPU:St
华为的规格:
三星的规格:
也就是说,商品的规格参数应该是与分类绑定的。每一个分类都有统一的规格参数模板,但不同商品其参数值可能不同。
如下图所示:
SKU 商品特有属性
SPU中会有一些特殊属性,用来区分不同的SKU,我们称为SKU特有属性。如华为META10的颜色、内存属性。
不同种类的商品,一个手机,一个衣服,其SKU属性不相同。
同一种类的商品,比如都是衣服,SKU属性基本是一样的,都是颜色、尺码等。
这样说起来,似乎SKU的特有属性也是与分类相关的?事实上,仔细观察你会发现,SKU的特有属性是商品规格参数的一部分 :
也就是说,我们没必要单独对SKU的特有属性进行设计,它可以看做是规格参数中的一部分。这样规格参数中的属性可以标记成两部分:
所有sku共享的规格属性(称为全局属性)
每个sku不同的规格属性(称为特有属性)
其他
在设计商品属性的时候,同时还要考虑到功能,比如,商品将会被搜索,排序,筛选,而有些字段是可以筛选的,有些则不可以
我们可以在设计时,将这部分属性标记出来,将来做搜索的时候,作为过滤条件。
2 表结构

CREATE TABLE `tb_specification` (
`category_id` bigint(20) NOT NULL COMMENT '规格模板所属商品分类id',
`specifications` varchar(3000) NOT NULL DEFAULT '' COMMENT '规格参数模板,json格式',
PRIMARY KEY (`category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品规格参数模板,json格式。';
很奇怪是吧,只有两个字段。特别需要注意的是第二个字段:
specificatons:规格参数模板,json格式
为什么是一个json?我们看下规格参数的格式:
如果按照传统数据库设计,这里至少需要3张表:
group:代表组,与商品分类关联
param_key:属性名,与组关联,一对多
param_value:属性备选值,与属性名关联,一对多
这样程序的复杂度大大增加,但是提高了数据的复用性。
我们的解决方案是,采用json来保存整个规格参数模板,不需要额外的表,一个字符串就够了。
因为规格参数分为很多组,所以json最外层是一个数组。
数组中是对象类型,每个对象代表一个组的数据,对象的属性包括:
group:组的名称
params:该组的所有属性
[{
"group": "主体",
"params": [{
"k": "品牌",
"searchable": false,
"global": true,
"options": []
}, {
"k": "型号",
"searchable": false,
"global": true,
"options": []
}, {
"k": "上市年份",
"searchable": false,
"global": true,
"options": [],
"numerical": true,
"unit": "年"
}]
}, {
"group": "主芯片",
"params": [{
"k": "CPU品牌",
"searchable": true,
"global": true,
"options": ["骁龙(Snapdragon)", "麒麟"]
}, {
"k": "CPU型号",
"searchable": false,
"global": true,
"options": []
}, {
"k": "CPU核数",
"searchable": true,
"global": true,
"options": ["一核", "二核", "四核", "六核", "八核", "十核"]
}, {
"k": "CPU频率",
"searchable": true,
"global": true,
"options":