您的位置:首页 > 数据库

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

2020-06-05 09:51 190 查看

商品相关表结构设计

  近年来,中国的电子商务快速发展,交易额连创新高,电子商务在各领域的应用不断拓展和深化、相关服务业蓬勃发展、支撑体系不断健全完善、创新的动力和能力不断增强。电子商务正在与实体经济深度融合,进入规模性发展阶段,对经济社会生活的影响不断增大,正成为我国经济发展的新引擎,加上几年手疫情的影响,电商、直播等线上销售愈加火热,本人亲自参与一个从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语句的欢迎大家在下发留言,同时,文中如果有理解不对的,也希望大家能够指出。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: