阿里巴巴新零售数据库设计(简化版)
阿里巴巴新零售数据库设计(简化版)
语雀地址:https://www.yuque.com/gavincoder/ngs5gi/upkm1p#WXQOv
基础概念
SPU
Standard Product Unit 标准产品单位
SPU描述一个产品的各种特性
什么时候用到SPU?
想买个ipad,搜ipad .
平台先去产品表搜id,然后再去商品表搜数据
因为产品表SPU数量远远小于商品表,这样可以很快获得商品信息
SKU
Stock Keeping Unit 库存进出计量单位
SKU是物理上不可分割的最小存货单位
库存字段,理论上应该放到SKU商品表与仓库表的交叉表内
SKU与权重
SKU与参数如何对应
品类不同,参数不同
采用1对多的数据结构
新零售系统的进销存属性
员工发货/角色权限定义
商品采购与入库
表结构设计知识点总览
表结构设计
品类表
参数表
boolean类型在mysql中是tinyint(1)
品牌表
设计首字母是为了前端分类查找
商品分类表(论坛留言表)
分类与品牌关联中间表
产品表
菱形标记的是创建了索引
一般情况下不会给字符串创建索引
商品表
JSON本质是字符串,不适合作为索引
JSON格式的商品图片
JSON格式的param参数,(这个参数列表是参数表里面定义的,后台上架商品时要求填写)
省份表与城市表
零售店/仓库/商品之间的对应关系
仓库表/仓库与商品中间表(库存表)
零售店表/零售店与商品中间表(库存表)
如果新零售平台有多个分店,库存不能放在商品表里
会员等级表
枚举类型
客户表
客户收货地址表
prime 是否作为默认收货地址
购物优惠券表/客户关联优惠券表
- 优惠券有使用期限,一个订单只能使用一张券
- 购物券与客户记录关联,一个用户有可能可以领多张同样的券
deno 优惠券的金额
condition 超过多少钱才能使用优惠券
max_num 优惠券最大发放数量(默认null时不限数量)
订单表
code 流水号,里面可以包含日期类型等
type 订单类型 线下销售/网络销售
shop_id 哪个实体店销售的
postage 邮费
weight 总重量,计算邮费用
voucher_id 优惠券id
订单详情表
一个订单中,不允许出现两个同样的商品SKU
部门表/职位表/员工表
mgr_id 上司id
term_date 离职日期
角色表/用户表 (能使用管理系统的员工)
快递表
sku指的是发送了那些商品(因为一个快递可以发送多个商品)
一个订单里面商品多,可以拆成多个快递发送,所以order_id可能一样,但sku一定不一样
qa_id 质检员id
de_id 发货员id
post_id 快递单号
price 真实邮费
ecp 快递公司(采用枚举)
退货表
payment 退款价格,有时可能不能按照原价退款
商品评价表
rating 一星到五星
供应商数据表/供应商与商品管理表
type 供货商类型: 厂家/代理/个人
采购表/入库表/采购与入库关联表
表文件
流水号/订单号设计
- 订单号是订单的唯一编号,经常用来做查询,设置为主键索引
- 流水号是打印在购物单据上的字符串,用于阅读,不做查询
28位流水号设计
避免偷换交易中的商品信息
案例: 如”全新进口”等广告信息,在客户购买后改成了”国产”
保存商品历次修改信息
老数据可以定期归档
原表主键id,在这另起一个字段
订单详情表也需要修改添加sku_old_id字段
智能拆分订单–就近发货难题
由于是自建仓库,
如果本地仓库没货/顾客城市没仓库,
那就需要从外地仓库发货
需要计算哪个仓库距离客户距离最短
1.通过高德地图API获得客户地理位置信息
可以使用hutool依赖包里的Http请求,查询地理坐标
2.利用MySQL计算两坐标点之间的距离
*111195 将坐标转换成距离
距离是M
除以1000便是KM
如下是北京跟上海的地理位置距离
查询出跟收货坐标点距离最近的仓库信息
且判断库存有货
select t.id from