电商项目数据库设计 | 第二篇:商品相关表结构

商品相关表结构设计

  近年来,中国的电子商务快速发展,交易额连创新高,电子商务在各领域的应用不断拓展和深化、相关服务业蓬勃发展、支撑体系不断健全完善、创新的动力和能力不断增强。电子商务正在与实体经济深度融合,进入规模性发展阶段,对经济社会生活的影响不断增大,正成为我国经济发展的新引擎,加上几年手疫情的影响,电商、直播等线上销售愈加火热,本人亲自参与一个从0-1的电商项目,带大家一起来聊聊一个电商项目在数据结构这块该怎么去设计。


商品表相关的数据表结构

以下两个问题大家不妨先想想:

  • SPU与SKU含义是什么,他们之间有什么关系,为什么要有SPU和SKU?
  • 库存应该怎么设置?

首先我们来看看京东、苏宁易购web端吧!

  • 京东:电商项目数据库设计 | 第二篇:商品相关表结构_第1张图片

  • 苏宁易购:
    电商项目数据库设计 | 第二篇:商品相关表结构_第2张图片

大家想想看,从菜单上面来看,我们的商品表该怎么设计,商品种类成千上万,每一类商品又有不同的规格,所以我们就引入了两个概念,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
    电商项目数据库设计 | 第二篇:商品相关表结构_第3张图片
  • 关系:一对多 一个品类下有多个参数,参数用name字段表示

品牌表与分类表的设计:
  • 品牌表:
      从上图可以看出,从菜单选完后,到三级菜单,比如我们选择买一个手机,最终要到三级菜单去选择我们要购买具体哪一个品牌。

    > ![image](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9ub3RlLnlvdWRhby5jb20veXdzL3B1YmxpYy9yZXNvdXJjZS9hOWM4ZjY5NzliYjE1NzJhOTE3NTEzNDhiNGVjZjcxNi94bWxub3RlL0ZFNkZEMkRDMzkxNjRDNDE4MjA3REZCQzlGQzExNzk1Lzc2MjE?x-oss-process=image/format,png)

  • 分类表:
      分类表主要是使用一个parent_id上级分类id,相当于一种链表结构,方便扩展,比如我们以后还需要添加一个四级、五级分类甚至更多,是不需要改变表结构的
      就好比方说,二级分类记录关联他隶属的一级分类的id,三级分类记录关联他隶属的二级分类的id,一次类推,一级分类就没有父id.
    电商项目数据库设计 | 第二篇:商品相关表结构_第4张图片
    电商项目数据库设计 | 第二篇:商品相关表结构_第5张图片

  • 分类、品牌关联表:
    因为分类表和品牌是多对多的关系,所以我们用一个中间表来维护这两个表
    > ![image](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9ub3RlLnlvdWRhby5jb20veXdzL3B1YmxpYy9yZXNvdXJjZS9hOWM4ZjY5NzliYjE1NzJhOTE3NTEzNDhiNGVjZjcxNi94bWxub3RlLzlDN0JERTIyNTIzNzQwQTRBNTRBMDA0MjM0NTZCN0UwLzc2MzI?x-oss-process=image/format,png)

上面我们就对分类表及品牌表做好了关联!实现多对多的关系,创建中间表实现关联。


SPU表:

当我们通过菜单到了从属品牌后,我们随便选一个品牌,比如我们选择Apple,出现这个品牌中有Air,Apple 11等等,这就是SPU,一个个的产品
电商项目数据库设计 | 第二篇:商品相关表结构_第6张图片

  • 字段有:
    电商项目数据库设计 | 第二篇:商品相关表结构_第7张图片

SPU表关联了品类id、分类id、品牌id,品牌id是可以为空的,因为有的散装的产品是没有品牌的

关联品类id,与品类实现一对一的关系,一个产品对应一个品类,同时一个品类也对应一个产品

SKU表:

电商项目数据库设计 | 第二篇:商品相关表结构_第8张图片

因为SPU表与SKU表是一对的关系的,所以我们就需要在SKU表中去维护SPU表的主键来实现两个表之间的关联

param:参数这个字段类型是用的json格式,在MySQL5.7+版本引入的

price:价格这个字段是否设置多个价格,比如原价、折扣价、最终价等等一系列字段看业务需求设置,我这里只用一个字段进行统一描述价格

电商项目数据库设计 | 第二篇:商品相关表结构_第9张图片

关于saleable:是否上架和valid是否有效这两个字段为什么要有,我做下说明:

假如我们现在有一款产品,销量很不多,但是呢,由于其他的原因这款商品现在不卖了,如果我们没有这两个字段,我们是否是要删除这个商品的信息呢?热销商品是牵扯到很多订单,删除了我们就需要删除所有的订单信息,所以我们在这里设置这两个字段用来描述商品的一个状态就可以了。


总结:
  • 设计哪几张表
表名 含义
品类表 对商品进行归档
参数表 维护复杂的参数
分类表 商品展示菜单
品牌表 对商品进行归档
SPU表 为了实现高效搜索
SKU表 即商品表
  • 实现关系

品类表与参数表:一对多,多的一方维护主键
分类表与品牌表:多对多,创建中间表
SPU表和SKU表:多对多,创建中间表
SPU表和品类表: 一对多,在SPU表中维护主键
SPU表和分类表:一对多,在SPU表中维护主键
SPU表和品牌表:一对多,在SPU表中维护主键

  • 实现关系图
    电商项目数据库设计 | 第二篇:商品相关表结构_第10张图片

SQL语句未上图,如果需要SQL语句的欢迎大家在下发留言,同时,文中如果有理解不对的,也希望大家能够指出。

你可能感兴趣的:(MySQL)