TPshop的规格表设计原理机制
TPshop商品规格比较简单, 数据库设计清晰, 先看上图购买商品时对应的选择, 不同规格有着不同的价格和不同的库存。
再看看后台对应的设置,手机例子
颜色:黑色 白色 金色
内存:32G 64G 128G
因为 黑色手机也有 32G 64G 128G , 然后白色手机也有32G 64G 128G 金色手机也有 32G 64G 128G 所以这里是有9种组合
9种价格 9种库存 9种条码 当拿到其中一个条码时就知道这个商品(手机)是什么规格是什么颜色什么内存等。。。。
下面来看看表结构设计
如上图可以看出
1. tp_goods_type 表的 id 4 表示手机,
2. tp_spec 表 type_id 里面的 4表是手机 id 16表示颜色 6表示内存
3. tp_spec_item表 spec_id 6表示内存 id 28表示 31G
4. tp_spec_item表 spec_id 16表示颜色 id 55表示 黑色
5. tp_spec_goods_price表的 key字段 28_55 表示32G 黑色 刚好对应 tp_spec_item表
如上图清晰可以理解, 如果不理解多看几遍完全可以简单理解。
以下是创建这四张表的sql 代码。 自己也可以在本地TPshop数据库查看一下
tpshop.tp_goods_type 商品类型表CREATE TABLE `tp_goods_type` (`id` smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id自增',`name` varchar(60) NOT NULL DEFAULT '' COMMENT '类型名称',PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=34 DEFAULT CHARSET=utf8tpshop.tp_spec 规格表CREATE TABLE `tp_spec` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '规格表',`type_id` int(11) DEFAULT '0' COMMENT '规格类型',`name` varchar(55) DEFAULT NULL COMMENT '规格名称',`order` int(11) DEFAULT '50' COMMENT '排序',`search_index` tinyint(1) DEFAULT '0' COMMENT '是否需要检索',PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=28 DEFAULT CHARSET=utf8tpshop.tp_spec_item 规格项表CREATE TABLE `tp_spec_item` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '规格项id',`spec_id` int(11) DEFAULT NULL COMMENT '规格id',`item` varchar(54) DEFAULT NULL COMMENT '规格项',PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=123 DEFAULT CHARSET=utf8tpshop.tp_spec_goods_price 规格对应 价格 库存 条码表CREATE TABLE `tp_spec_goods_price` (`goods_id` int(11) DEFAULT '0' COMMENT '商品id',`key` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '规格键名',`key_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '规格键名中文',`price` decimal(10,2) DEFAULT NULL COMMENT '价格',`store_count` int(11) unsigned DEFAULT '10' COMMENT '库存数量',`bar_code` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT '' COMMENT '商品条形码') ENGINE=MyISAM DEFAULT CHARSET=utf8
这4个表解决相同盘子的手机,因参数不同引发的不同的价格
TPshop的规格表设计原理机制的更多相关文章
- Atitit.异常机制的设计原理
Atitit.异常机制的设计原理 缺陷 关键是只要知晓有一个异常表的存在,try 的范围就是体现在异常表行记录的起点和终点.JVM 在 try 住的代码区间内如有异常抛出的话,就会在当前栈桢的异常表中 ...
- 走向DBA[MSSQL篇] 针对大表 设计高效的存储过程【原理篇】 附最差性能sql语句进化过程客串
原文:走向DBA[MSSQL篇] 针对大表 设计高效的存储过程[原理篇] 附最差性能sql语句进化过程客串 测试的结果在此处 本篇详解一下原理 设计背景 由于历史原因,线上库环境数据量及其庞大,很多千 ...
- TPshop分销功能的使用与表设计
首先来段科普,摘自百度百科: 在西方经济学中,分销 的含义是建立销售渠道的意思,根据著名的营销大师菲利普·科特勒的定义,分销渠道(Distribution Channel)又或者叫营销渠道(Marke ...
- Atitit. servlet 与 IHttpHandler ashx listen 和HttpModule的区别与联系 原理理论 架构设计 实现机制 java php c#.net js javascript c++ python
Atitit. servlet 与 IHttpHandler ashx listen 和HttpModule的区别与联系 原理理论 架构设计 实现机制 java php c#.net j ...
- 商品表(spu)、规格表(sku)设计
1. 先做一下专业术语解释:spu和sku 这里拿iphone6s举例,它身上有很多的属性和值, 比如: 毛重: 420.00 g 产地: 中国大陆 容量: 16G, 64G, 128G 颜色: 银, ...
- html5设计原理(转)
转自: http://www.cn-cuckoo.com/2010/10/21/the-design-of-html5-2151.html 今天我想跟大家谈一谈HTML5的设计.主要分两个方面:一 ...
- 学习HTML5必读之《HTML5设计原理》
引子:很久前看过的一遍受益匪浅的文章,今天再次转过来,希望对学习HTML5的朋友有所帮助. 今天我想跟大家谈一谈HTML5的设计.主要分两个方面:一方面,当然了,就是HTML5.我可以站在这儿只讲HT ...
- mongo学习笔记2--索引及表设计
-背景: 鉴于我们使用mongo作为数据库,期间少不了需要添加索引和对业务表进行设计.因此以下我对mongo索引及表设计原则做了一些分享.希望对大家有用,如有错误还望指正~ MongDB的索引类型简介 ...
- 高性能页面加载技术--BigPipe设计原理及Java简单实现
1.技术背景 动态web网站的历史可以追溯到万维网初期,相比于静态网站,动态网站提供了强大的可交互功能.经过几十年的发展,动态网站在互动性和页面显示效果上有了很大的提升,但是对于网站动态网站的整体页面 ...
随机推荐
- angular中的表单数据自定义验证
之前说过了angular是如何给表单的数据进行基本的,常用的验证的:angular学习笔记(二十)-表单验证 但是在实际工作中,这些验证是远远不够的,很多时候我们需要自定义一些验证规则,以及一些异步, ...
- vim学习笔记(12):在vim中修改文件编码,解决vim 打开乱码
在linux 中查看文件编码可以通过以下几种方式: 一.查看文件编码 1.查看文件编码file命令 :file ip.txt ip.txt: UTF-8 Unicode text, with esca ...
- 6款漂亮HTML CSS样式用户留言表单
如今我们的网站.页面更加需要注重细节,不论是字体的样式.还是图片的分辨率清晰度都会影响到用户的访问体验和PV,以及用户以后是否会回访我们的网站/博客.如果有时间的时候,老左也会浏览和阅读相关的前端网站 ...
- 【Java】LinkedBlockingQueue、PriorityQueue and ConcurrentLinkedQueue
1.LinkedBlockingQueue: 基于链接节点的可选限定的blocking queue . 这个队列排列元素FIFO(先进先出). 队列的头部是队列中最长的元素. 队列的尾部是队列中最短时 ...
- linux笔记——一些命令工具
ntpdate 时间同步 netstat aux网络状态 htpasswd du -h 文件大小 df 文件信息 fdisk 磁盘分区 查找删除 rm `ls |grep ` ls |grep |xa ...
- 1. 集成学习(Ensemble Learning)原理
1. 集成学习(Ensemble Learning)原理 2. 集成学习(Ensemble Learning)Bagging 3. 集成学习(Ensemble Learning)随机森林(Random ...
- 算法篇---Shell排序(希尔)算法
先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组.所有距离为dl的倍数的记录放在同一个组中.先在各组内进行直接插入排序:然后,取第二个增量d2<d1重复上述的分组和排序,直至 ...
- 使用DbUtils对JDBC封装实现面向实体查询
直接上代码 package org.smart4j.chapter2.helper; import org.apache.commons.dbcp2.BasicDataSource; import o ...
- 【微信小程序】下拉刷新真机测试无效
根据文档的描述,做上拉加载时直接实现页面的onReachBottom()函数即可.但是要做下拉刷新时,除了实现onPullDownRefresh()函数外,还必须要在app.json中配置开启enab ...
- (转载)WPF中的动画——(一)基本概念
http://www.cnblogs.com/TianFang/p/4050845.html WPF的一个特点就是支持动画,我们可以非常容易的实现漂亮大方的界面.首先,我们来复习一下动画的基本概念.计 ...