电商项目数据库设计 | 第二篇:商品相关表结构
商品相关表结构设计
近年来,中国的电子商务快速发展,交易额连创新高,电子商务在各领域的应用不断拓展和深化、相关服务业蓬勃发展、支撑体系不断健全完善、创新的动力和能力不断增强。电子商务正在与实体经济深度融合,进入规模性发展阶段,对经济社会生活的影响不断增大,正成为我国经济发展的新引擎,加上几年手疫情的影响,电商、直播等线上销售愈加火热,本人亲自参与一个从0-1的电商项目,带大家一起来聊聊一个电商项目在数据结构这块该怎么去设计。
商品表相关的数据表结构
以下两个问题大家不妨先想想:
- SPU与SKU含义是什么,他们之间有什么关系,为什么要有SPU和SKU?
- 库存应该怎么设置?
首先我们来看看京东、苏宁易购web端吧!
-
京东:
-
苏宁易购:
大家想想看,从菜单上面来看,我们的商品表该怎么设计,商品种类成千上万,每一类商品又有不同的规格,所以我们就引入了两个概念,SPU和SKU,那么什么又叫做SPU和SKU?
- SPU:
SPU= Standard Product Unit(标准化产品单元)
是商品信息聚合的最小单位
属性值、特性相同的商品就可以成为一个SPU
- SKU:
SKU=Stock Keeping Unit(库存量单位)
SKU是用来定价和管理库存的
如:iPhone11 有很多颜色,很多配置,每个颜色和配置的组合都会形成新的产品,这时就产生很多SKU
SKU在传统线下行业也是一个非常常用的概念,尤其是服装行业,同款不同尺码不同色都是独立的SKU,需要有独立的条形码,独立的库存管理等
明白了SPU和SKU的含义,相信大家对他们之间的关系和存在的意义都有一个大致的了解了吧,接下来,我们就开始动手吧。
表设计
向这种大型电商平台,售卖的商品多种多样,产品之间的规格也都不一样,我们在设计商品表的时候也不能把每一种商品都设计到一起,我们必须进行分类管理是不是更加明确,然后每一类里面又有其他的子类,以此类推。
其实吧,我们平时学习的时候,带着一个疑问去学习,到最后做一个总结,往往会有意想不到的效果
在开始设计以前,我们上面提到过,商品种类成千上万,每个商品又有不同的规格,但是在设置商品规格的时候,不同的商品又有不同的参数,在一个大型的电商平台下我们又改如何去细分达到更好的效果。
参数如何与SKU关联起来?
话不多说,开始设计吧!
先设计这四张表:
品类表------参数表
| |
产品表------商品表
品类表与参数表的设计:
- 品类表:
将所有的商品按品类划分,与之参数表形成一对多的的关系,主键维护在参数表
- 参数表:
关联品类表主键,spg_id
![image](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9ub3RlLnlvdWRhby5jb20veXdzL3B1YmxpYy9yZXNvdXJjZS9hOWM4ZjY5NzliYjE1NzJhOTE3NTEzNDhiNGVjZjcxNi94bWxub3RlLzdFMzFCQzRBOENGQTQ5N0M4MkZGQjhFRTFDMDg5QTI4Lzc3MjY?x-oss-process=image/format,png)"> - 关系:一对多 一个品类下有多个参数,参数用name字段表示
品牌表与分类表的设计:
-
品牌表:
从上图可以看出,从菜单选完后,到三级菜单,比如我们选择买一个手机,最终要到三级菜单去选择我们要购买具体哪一个品牌。
![image](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9ub3RlLnlvdWRhby5jb20veXdzL3B1YmxpYy9yZXNvdXJjZS9hOWM4ZjY5NzliYjE1NzJhOTE3NTEzNDhiNGVjZjcxNi94bWxub3RlL0ZFNkZEMkRDMzkxNjRDNDE4MjA3REZCQzlGQzExNzk1Lzc2MjE?x-oss-process=image/format,png)"> -
分类表:
分类表主要是使用一个parent_id上级分类id,相当于一种链表结构,方便扩展,比如我们以后还需要添加一个四级、五级分类甚至更多,是不需要改变表结构的
就好比方说,二级分类记录关联他隶属的一级分类的id,三级分类记录关联他隶属的二级分类的id,一次类推,一级分类就没有父id.
-
分类、品牌关联表:
因为分类表和品牌是多对多的关系,所以我们用一个中间表来维护这两个表
![image](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9ub3RlLnlvdWRhby5jb20veXdzL3B1YmxpYy9yZXNvdXJjZS9hOWM4ZjY5NzliYjE1NzJhOTE3NTEzNDhiNGVjZjcxNi94bWxub3RlLzlDN0JERTIyNTIzNzQwQTRBNTRBMDA0MjM0NTZCN0UwLzc2MzI?x-oss-process=image/format,png)">
上面我们就对分类表及品牌表做好了关联!实现多对多的关系,创建中间表实现关联。
SPU表:
当我们通过菜单到了从属品牌后,我们随便选一个品牌,比如我们选择Apple,出现这个品牌中有Air,Apple 11等等,这就是SPU,一个个的产品
![image](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9ub3RlLnlvdWRhby5jb20veXdzL3B1YmxpYy9yZXNvdXJjZS9hOWM4ZjY5NzliYjE1NzJhOTE3NTEzNDhiNGVjZjcxNi94bWxub3RlL0Y3MkZDOTM2MEU3QjQ5RjE5NDU4MkVEMDBBRjhCMUI3Lzc2NTE?x-oss-process=image/format,png)">
- 字段有:
![image](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9ub3RlLnlvdWRhby5jb20veXdzL3B1YmxpYy9yZXNvdXJjZS9hOWM4ZjY5NzliYjE1NzJhOTE3NTEzNDhiNGVjZjcxNi94bWxub3RlLzREMDkxQzg3ODkzNjQ3REQ5QUYzQTk1NDI3NTQ5OTYzLzc2NTQ?x-oss-process=image/format,png)">
SPU表关联了品类id、分类id、品牌id,品牌id是可以为空的,因为有的散装的产品是没有品牌的
关联品类id,与品类实现一对一的关系,一个产品对应一个品类,同时一个品类也对应一个产品
SKU表:
因为SPU表与SKU表是一对的关系的,所以我们就需要在SKU表中去维护SPU表的主键来实现两个表之间的关联
param:参数这个字段类型是用的json格式,在MySQL5.7+版本引入的
price:价格这个字段是否设置多个价格,比如原价、折扣价、最终价等等一系列字段看业务需求设置,我这里只用一个字段进行统一描述价格
关于saleable:是否上架和valid是否有效这两个字段为什么要有,我做下说明:
假如我们现在有一款产品,销量很不多,但是呢,由于其他的原因这款商品现在不卖了,如果我们没有这两个字段,我们是否是要删除这个商品的信息呢?热销商品是牵扯到很多订单,删除了我们就需要删除所有的订单信息,所以我们在这里设置这两个字段用来描述商品的一个状态就可以了。
总结:
- 设计哪几张表
表名 | 含义 |
---|---|
品类表 | 对商品进行归档 |
参数表 | 维护复杂的参数 |
分类表 | 商品展示菜单 |
品牌表 | 对商品进行归档 |
SPU表 | 为了实现高效搜索 |
SKU表 | 即商品表 |
- 实现关系
品类表与参数表:一对多,多的一方维护主键
分类表与品牌表:多对多,创建中间表
SPU表和SKU表:多对多,创建中间表
SPU表和品类表: 一对多,在SPU表中维护主键
SPU表和分类表:一对多,在SPU表中维护主键
SPU表和品牌表:一对多,在SPU表中维护主键
- 实现关系图
SQL语句未上图,如果需要SQL语句的欢迎大家在下发留言,同时,文中如果有理解不对的,也希望大家能够指出。
- 电商项目数据库设计 | 第四篇:客户相关表结构
- 电商项目数据库设计 | 第三篇:库存相关表结构
- Django_xAdmin项目(一)之项目结构、数据库的设计以及xadmin的配置
- 第一章--电商设计表电商项目--数据库设计
- 第二章--电商设计表-商品模块--mysql电商项目设计
- 电商项目(十二)数据表结构设计
- python django 多级业务树形结构规划及页面渲染 概述: 在项目中,父级到子级结构并不少见,如果仅仅的两层树形结构,我们可以使用数据库的外键设计轻松做到,子级业务表设计一字段外键到父级
- ***电商数据库设计参考:ecshop数据库+订单表结构等
- ecshop 电商系统数据库结构设计
- 复习电商笔记-10-商品数据库设计
- 【淘淘商城项目】商品规格参数的表结构设计
- 电商项目可扩展性数据库设计与实现
- 【转载】电商-商品相关-设计
- ASP无限级分类原理、数据库结构设计、应用及相关函数
- 基于MVC模式的电商项目开发系列之2:数据库设计
- 电商项目的数据库表设计(MySQL版)
- Jsp动态网站初步项目 --简单商品浏览页面 (数据库itemdb的设计)
- 合理优化数据库表结构提高项目执行效率[数据库设计]
- 计划管理模块相关的数据库结构设计
- Django电商网站项目(1)--项目立项与结构设计