商品规格表结构设计

商品规格包括规格组合、规格项,规格项为规格组的成员。

规格组

|-规格项:规格值

|-规格项:规格值

规格组

|-规格项:规格值

|-规格项:规格值

同一类商品的规格相同。

方案一

使用多个表存储商品规格。在已有的商品分类表和商品表的基础上,增加商品规格分组表、商品规格项表、商品规格值表。

表设计

商品表:tb_item

列名       类型       键   说明

item_id  bigint     P     商品id

cat_id    bigint     F     商品分类id

商品分类表:tb_item_cat

列名       类型       键   说明

cat_id    bigint     P     商品分类id

商品规格组表:tb_item_param_group

列名       类型       键   说明

group_id bigint     P     商品规格组id

group_name varchar         商品规格组名称

cat_id    bigint     F     商品分类id

商品规格项表:tb_item_param_key

列名       类型       键   说明

key_id    bigint     P     商品规格项id

key_name    varchar         商品规格项名称

group_id bigint     F     商品规格组id

商品规格值表:tb_item_param_value

列名       类型       键   说明

item_id  bigint     P     商品id(联合主键)

key_id    bigint     P     商品规格项id(联合主键)

param_value varchar         商品规格信息

表关系

查询语句

查询某id商品信息,规格组、规格项、规格值:

SELECT

pg.group_name,

pk.key_name,

pv.param_value

FROM

tb_item_param_value pv

LEFT JOIN tb_item_param_key pk ON pv.key_id = pk.key_id

LEFT JOIN tb_item_param_group pg ON pk.group_id = pg.group_id

WHERE

item_id = xxxxx

缺点

需要创建多张表来描述规格参数之间的关系。

查询时需要复杂的sql语句查询。

规格参数数据量是商品信息的几十倍,数据量十分庞大,查询时效率很低。

商品参数变时需要改动多个表。

方案二

每一个商品对应一个规格参数的模板。

[

{

//规格组名称

"group": "主体",

// 组的规格项名称

"params": [

"品牌",

"型号",

"颜色",

"上市年份",

"上市月份"

]

},

{

"group": "网络",

"params": [

"4G",

"3G",

"2G"

]

}

]

添加商品时,根据规格参数模板生成表单,保存对应的规格参数的json格式。

[

{

//规格组名称

"group": "主体",

// 组的规格项名称

"params": [

{

"k": "品牌",

"v": "苹果(Apple)"

},

{

"k": "型号",

"v": "iPhone 6 A1589"

},

{

"k": "颜色",

"v": "白色"

},

{

"k": "上市年份",

"v": "2100"

},

{

"k": "上市月份",

"v": "12"

}

]

},

{

"group": "网络",

"params": [

{

"k": "4G",

"v": "支持"

},

{

"k": "3G",

"v": "支持"

},

{

"k": "2G",

"v": "支持"

}

]

}

]

特点

优点:

单表查询,不需要做多表管理。

如果要求新添加的商品规格项发生改变,只需要变更模板,之前的商品还是按照之前的格式存储。

缺点:

复杂的表单和json之间的转换。对js的编写要求很高。

python --商品规格--表结构设计的更多相关文章

  1. 商品表(spu)、规格表(sku)设计

    1. 先做一下专业术语解释:spu和sku 这里拿iphone6s举例,它身上有很多的属性和值, 比如: 毛重: 420.00 g 产地: 中国大陆 容量: 16G, 64G, 128G 颜色: 银, ...

  2. Day08_商品规格管理

    学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"乐优商城"获取视频和教程资料! b站在线视频 0.学习 ...

  3. 电商项目-商品表(spu)、规格表(sku)设计

    之前在工作中,需要实现商品规格功能,做了很长一段时间,现在回过头来整理下设计思路. sku,spu概念: SPU = Standard Product Unit (标准化产品单元),SPU是商品信息聚 ...

  4. TPshop的规格表设计原理机制

    TPshop商品规格比较简单, 数据库设计清晰, 先看上图购买商品时对应的选择, 不同规格有着不同的价格和不同的库存. 再看看后台对应的设置,手机例子 颜色:黑色 白色 金色 内存:32G 64G  ...

  5. ecshop 属性表(attribute)商品属性表(goods_attr)货品表(prduct) 商品数量的联系

    ecshop 属性表(attribute)商品属性表(goods_attr)货品表(prduct) 商品数量的联系 一个商城的商品属性存放在属性表(attribute)里 ,每个商品对应的属性在goo ...

  6. CMDB资产管理系统开发【day25】:表结构设计2

    表结构设计1详细注释代码 # _*_coding:utf-8_*_ __author__ = 'luoahong' from assets.myauth import UserProfile from ...

  7. tpshop商品属性表关系

    TPshop 里面的商品属性, 首先看看TPshop商品详情中的属性介绍, 纯展示给用户看的. 再来tpshop看看商品列表帅选页面的属性,可以根据属性帅选不同的商品 再来看看tpshop后台属性管理 ...

  8. 巨蟒django之CRM1 需求分析&&表结构设计&&注册登录验证

    1.需求分析 .项目 ()业务 ()权限的管理 .CRM customer relationship management 客户关系管理系统 .谁来使用CRM? 销售&&班主任& ...

  9. ofbiz数据库表结构设计(3)- 订单ORDER

    对于订单来说,主要的表就是ORDER_HEADER和ORDER_ITEM.ORDER_HEADER就是所谓的订单头,一条记录代表一条订单. ORDER_PAYMENT_PREFERENCE是订单的支付 ...

随机推荐

  1. VMware虚拟机配置嵌套虚拟化

    VMware虚拟机下创建kvm-sever,server下继续创建kvm虚拟机(嵌套虚拟化),返回libvirt错误解决办法:SSH连接VMwarevi /etc/vmware/config增加一行设 ...

  2. 动态创建js脚本和 css样式

    //1.动态添加外部js文件 function loadScript(url){ var script = document.createElement("script"); sc ...

  3. 页面JS实现按钮点击增加输入框

    学习记录 https://www.tuicool.com/articles/byUf2qe

  4. Codeforces Round #510 (Div. 2)

    Codeforces Round #510 (Div. 2) https://codeforces.com/contest/1042 A 二分 #include<iostream> usi ...

  5. boost的下载和安装(windows版)

    1 简介 boost是一个准C++标准库,相当于STL的延续和扩充,它的设计理念和STL比较接近,都是利用泛型让复用达到最大化. boost主要包含以下几个大类: 字符串及文本处理.容器.迭代器(it ...

  6. GUI学习之一——PyQt5初识

    我们在第〇篇里先演示了GUI的功能,其实Python有多个库是支持GUI编程的,python官网列出了大量的说明,其中包括了原生的tkinter 还有许多第三方库 Pyqt PySide wxPyth ...

  7. cpp 区块链模拟示例(一)工程建立

    /* 作 者: itdef 欢迎转帖 请保持文本完整并注明出处 技术博客 http://www.cnblogs.com/itdef/ 技术交流群 群号码:432336863欢迎c c++ window ...

  8. 设计模式之模板模式 template

    设计模式 模板模式如果有一个流程如下step1();step2();step3();step4();step5();其中step3() step5()是需要用户自己编写使用其他步骤是固定的那么可以写成 ...

  9. Spring 框架XML文件的配置文件

    <?xml version="1.0" encoding="UTF-8"?><beans xmlns:xsi="http://www ...

  10. 别人的Linux私房菜(12)正则表达式与文件格式化处理

    vi gerp awk sed支持正则表达式   cp ls不支持,只能使用bash本身的通配符 正则表达式分为基础正则表达式和拓展正则表达式 使用正则表达式注意语系的影响 http://cn.lin ...