案例-新零售数据库设计
[L178 - 阿里新零售数据库设计与实战 (升级版) 提升数据库综合能力]
业务介绍
新零售是更高效的零售,从线上回到线下,使用线上技术和线下结合。
- 企业先从小程序起家,开发成本低,上线周期短,功能比较简单明确
- 小程序做到一定的程度之后,再开发 APP,承载更多功能
- 用户使用量再大,功能再多之后,再搭建购物网站,服务器等技术成本很高
- 最后发展线下门店,投入非常巨大
拼多多上市到现在还没有自己的购物网站,重点发展就是小程序和 APP。
业务数据库设计流程
需求分析:根据用户的需求,分析出需要记录的数据
概要设计:根据分析出的数据,设计 ER 图
详细设计:将 ER 图转换成数据库模型图和数据表
ER 图
ER 图也称实体关系图,提供了表示实体类型、属性和关系的方法,用来描述现实世界的概念模型。
- 复合属性是多个属性的组合
- 多值属性是某个属性可以有多个不同的取值
- 派生属性是不保存在实体中的属性
- 可选属性是允许没有值的属性
数据模型图
- 表名
- 字段名
- 字段类型
CRUD
- 批量插入数据忽略失败的数据行
- 实现不存在就插入,存在就更新
- 使用 FROM 子查询,替代 WHERE 子查询
表设计
什么是 SPU?
SPU 是标准产品单位,SPU 描述一个产品的各种特性。
比如:苹果 12 min 手机是一个产品,选择颜色、内存后的是一个上架商品。区分为产品表,商品表,一个产品中有多个商品。
什么是 SKU?
SKU 是库存进出计量的单位,SKU 是物理上不可分割的最小存货单位。
设计品牌和分类的关系
品牌表
商品分类表
商品有三级分类:
手机/数码/配件 -> 手机通信 -> 手机
手机/数码/配件 -> 手机配件 -> 移动电源
在表里添加一个字段,记录上一个节点的 ID。就是每条记录都去关联它上一条记录,使用链表结构。各大论坛的留言表都是这样设计的。就算有一千级的分类,数据表都能存储。
商品分类与品牌关联表结构
设计产品表和商品表
产品表
产品表不能删除,会影响到其它表,只能设置下架。
商品表
商品表images
字段是JSON
,里面存放商品详细图片,轮播图片。
商品参数字段也是JSON
,具体的字段名和参数表一一对应。通过spu_id
去获取对于的产品,再通过产品表获取对于的品类,再通过品类获取具体的参数。
设计商品的库存表
库存能定义到商品表吗?
如果零售系统没有分店和仓库,那么可以直接将库存定义到商品表。
如果存在分店和仓库,那就不能这样设计。
零售店与仓库是多对多的关系。