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


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

    语雀地址: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




  • 相关阅读:
    守护进程的创建(syslog函数)
    进程控制fork vfork,父子进程,vfork保证子进程先运行
    进程概述,父子进程
    gdb调试分析多线程死锁
    tcp握手
    实现自己的ls命令
    获取当前目录getcwd,设置工作目录chdir,获取目录信息
    目录的创建,删除,获取当前目录
    文件的移动,删除 rename remove unlink 函数
    sendkeys
  • 原文地址:https://www.cnblogs.com/gavin-coder/p/13328520.html
Copyright © 2020-2023  润新知