阿里巴巴新零售数据库设计(简化版)

语雀地址:https://www.yuque.com/gavincoder/ngs5gi/upkm1p#WXQOv

image.png

基础概念

SPU

Standard Product Unit 标准产品单位
SPU描述一个产品的各种特性

什么时候用到SPU?

想买个ipad,搜ipad .
平台先去产品表搜id,然后再去商品表搜数据
因为产品表SPU数量远远小于商品表,这样可以很快获得商品信息

SKU

Stock Keeping Unit 库存进出计量单位
SKU是物理上不可分割的最小存货单位

库存字段,理论上应该放到SKU商品表与仓库表的交叉表内

SKU与权重

  • 新零售平台主要是B2C的,所以修改SKU对权重的影响不大.
  • 但是B2B的平台,修改SKU对商品权重影响很大 (约束商家修改SKU赖账之类,如”全新进口”在客户购买后改成了”国产”)

SKU与参数如何对应

品类不同,参数不同
采用1对多的数据结构
image.pngimage.png

新零售系统的进销存属性

员工发货/角色权限定义
image.png

商品采购与入库

image.png

表结构设计知识点总览

image.png

表结构设计

品类表

image.pngimage.pngimage.png

参数表

boolean类型在mysql中是tinyint(1)

image.pngimage.pngimage.png

品牌表

设计首字母是为了前端分类查找

image.pngimage.pngimage.png

商品分类表(论坛留言表)

image.pngimage.pngimage.png

分类与品牌关联中间表

image.pngimage.png

产品表

菱形标记的是创建了索引
一般情况下不会给字符串创建索引

image.pngimage.png
image.png

商品表

image.pngimage.png
image.png

JSON本质是字符串,不适合作为索引
JSON格式的商品图片

image.png

JSON格式的param参数,(这个参数列表是参数表里面定义的,后台上架商品时要求填写)
image.png

省份表与城市表

image.png

零售店/仓库/商品之间的对应关系

image.png

仓库表/仓库与商品中间表(库存表)

image.png

零售店表/零售店与商品中间表(库存表)

如果新零售平台有多个分店,库存不能放在商品表里

image.png

会员等级表

枚举类型

image.pngimage.png

客户表

image.png

客户收货地址表

prime 是否作为默认收货地址

image.pngimage.png

购物优惠券表/客户关联优惠券表

  • 优惠券有使用期限,一个订单只能使用一张券
  • 购物券与客户记录关联,一个用户有可能可以领多张同样的券

deno 优惠券的金额
condition 超过多少钱才能使用优惠券
max_num 优惠券最大发放数量(默认null时不限数量)

image.pngimage.png

订单表

code 流水号,里面可以包含日期类型等
type 订单类型 线下销售/网络销售
shop_id 哪个实体店销售的
postage 邮费
weight 总重量,计算邮费用
voucher_id 优惠券id

image.png

订单详情表

一个订单中,不允许出现两个同样的商品SKU

image.png

部门表/职位表/员工表

mgr_id 上司id
term_date 离职日期

image.png
image.pngimage.png

角色表/用户表 (能使用管理系统的员工)

image.pngimage.png

快递表

sku指的是发送了那些商品(因为一个快递可以发送多个商品)
一个订单里面商品多,可以拆成多个快递发送,所以order_id可能一样,但sku一定不一样
qa_id 质检员id
de_id 发货员id
post_id 快递单号
price 真实邮费
ecp 快递公司(采用枚举)

image.png

退货表

payment 退款价格,有时可能不能按照原价退款

image.png

商品评价表

rating 一星到五星

image.pngimage.png

供应商数据表/供应商与商品管理表

type 供货商类型: 厂家/代理/个人

image.png

采购表/入库表/采购与入库关联表

image.png

表文件

neti-新零售数据库.sql

流水号/订单号设计

  • 订单号是订单的唯一编号,经常用来做查询,设置为主键索引
  • 流水号是打印在购物单据上的字符串,用于阅读,不做查询

28位流水号设计
image.png

避免偷换交易中的商品信息

案例: 如”全新进口”等广告信息,在客户购买后改成了”国产”

  • B2B电商平台(如淘宝),通常采用保存历次商品修改修改信息/降低搜索排名
  • B2C电商平台(如自营的苏宁电商),只需要保存历次商品修改信息即可

保存商品历次修改信息

老数据可以定期归档

image.png

原表主键id,在这另起一个字段

image.png
image.png

订单详情表也需要修改添加sku_old_id字段

image.png

智能拆分订单–就近发货难题

由于是自建仓库,
如果本地仓库没货/顾客城市没仓库,
那就需要从外地仓库发货
需要计算哪个仓库距离客户距离最短

1.通过高德地图API获得客户地理位置信息

可以使用hutool依赖包里的Http请求,查询地理坐标

2.利用MySQL计算两坐标点之间的距离

*111195 将坐标转换成距离
距离是M
除以1000便是KM
如下是北京跟上海的地理位置距离

image.png

查询出跟收货坐标点距离最近的仓库信息

image.png

且判断库存有货

select t.id from
image.png

版权声明:本文为gavin-coder原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/gavin-coder/p/13328520.html