业务数据
- 熟悉业务数据
- 电商系统表结构
- 1.活动信息表
- 2.活动规则表(activity_rule)
- 3.活动商品关联表(activity_sku)
- 4.平台属性表(base_attr_info)
- 5 平台属性值表(base_attr_value)
- 6.一级分类表(base_category1)
- 7.二级分类表(base_category2)
- 8.三级分类表(base_category3)
- 9.字典表(base_dic)
- 10.省份表(base_province)
- 11.地区表(base_region)
- 12.品牌表(base_trademark)
- 13.购物车表(cart_info)
- 14.评价表(comment_info)
- 15. 优惠券信息表(coupon_info)
- 16.优惠券优惠范围表(coupon_range)
- 17.优惠券领用表(coupon_use)
- 18.收藏表(favor_info)
- 19. 订单明细表(order_detail)
- 20.订单明细活动关联表(order_detail_activity)
- 21.订单明细优惠券关联表(order_detail_coupon)
- 22.订单表(order_info)
- 23.退单表(order_refund_info)
- 24.订单状态流水表(order_status_log)
- 25.支付表(payment_info)
- 26 退款表(refund_payment)
- 27 SKU平台属性表(sku_attr_value)
- 28.SKU信息表(sku_info)
- 29 SKU销售属性表(sku_sale_attr_value)
- 30.SPU信息表(spu_info)
- 31.SPU销售属性表(spu_sale_attr)
- 32.SPU销售属性值表(spu_sale_attr_value)
- 33.用户地址表(user_address)
- 34 用户信息表(user_info)
- 业务流程对表中数据的影响分析
- 后台管理系统表
熟悉业务数据
熟悉业务数据,业务数据都存储在mysql中,也就是熟悉这些表;
熟悉业务数据的方法
(1)宏观看整个数据库:有哪些表
(2)熟悉每张表的表结构:看一个表,和其大致有关联的表,要关注每个字段是什么,还要关注每行代表什么
(3)结合具体业务过程,分析每张表的数据是如何变化的
1.3.3 表关系梳理
(1)收藏和加购业务
收藏\加购\领用优惠券业务是一样的,用户和商品都是多对多的关系,通过收藏表和加购表关联起来
(2)订单相关业务表
(3)支付业务
(4)退单业务
(5)退款业务
(6)评价业务
1.3.4 理解业务过程对数据的影响
(1)下单业务
一次下单行为:
1.订单表新增一行
2. 订单状态表:一行是某个订单的一个状态,因此也会插入一行数据
3. 订单明细表:订单中有多少个sku,就写入多少条数据
4. 订单明细活动/优惠券表根据订单中商品是否参与,写入
支付的时候:
订单表中的状态会变
订单状态流水表会变
订单完成了,就不会再变了
(2)领券业务
初始状态:刚领券未使用时,字段信息
下单后:order_id,状态,using_time会变
(2)业务数据写入后不会变化的
1.评价表
2.
1.3.5 后台管理相关表:
平台属性表和三级分类直接关联
sku属性表和sku信息表直接关联
电商系统表结构
1.活动信息表
- 每一行代表一个活动;
- 该表的写入者为公司运营人员,他们在后台管理系统中创建活动、发布优惠券等
- create_time 是该行记录的写入时间
2.活动规则表(activity_rule)
- 一个活动会有多个规则;
- 一行代表一个活动里面的一个活动规则,id就是活动规则id,通过activity_id和活动绑定;
- 注意:
avtivyty_type
字段是冗余信息,活动信息表中就有;冗余的好处是不用join,可以提升查询性能; - 满减金额和优惠金额是一组,满减金额是指参与此活动的商品达到多少金额可以减去优惠金额,前者是条件,后者是效果
- 同理,满减件数和优惠折扣也是一组;达到多少件可以参与优惠折扣
- 活动类型决定了该活动是以优惠金额还是优惠折扣的方式打折
- 该表也是由公司运营人员在后台管理系统进行管理
3.活动商品关联表(activity_sku)
- 此表一行代表某个活动和某个sku的有关联关系
- 此表是用来划定能够参与某个活动的sku有哪些
- 商品参与活动是在下单的时候参与的,因此应该记录的是订单参与了哪些活动;
4.平台属性表(base_attr_info)
- 紫色框里面的是平台属性,不在框里面的是平台属性值;
- 分类id指的是当前平台属性属于哪个分类
5 平台属性值表(base_attr_value)
- 属性值表和属性表是多对1的关系,一个属性拥有多个属性值,通过attr_id关联
6.一级分类表(base_category1)
7.二级分类表(base_category2)
8.三级分类表(base_category3)
9.字典表(base_dic)
- 存储对一些编码的解释,比如订单表中的订单状态字段使用编码来标识的,但是需要通过字典表获取该标识的含义
10.省份表(base_province)
11.地区表(base_region)
12.品牌表(base_trademark)
13.购物车表(cart_info)
- 这是一张业务表,能够看到每个用户的购物车中有哪些商品
- 其粒度是userid 和 skuid ,意味着一个用户购物车有多少sku,就有多少行数据
14.评价表(comment_info)
- 也是业务表
- 粒度为userid和skuid
15. 优惠券信息表(coupon_info)
- coupon_name和counpon_type为优惠券的基本信息
- condition相关字段,到折扣等都是活动优惠规则
- 注意一点,这张表既包含了优惠券基本信息又包含了优惠券规则,而对于活动来说,将活动的基本信息和活动规则放在了两张表中;原因是一个活动信息对应多个活动规则,如果放在一张表,一行一个活动规则的话,会造成活动的基本信息的冗余;而一个优惠券只有一个规则,因此不会有冗余,因此不需要将优惠券信息和优惠券规则分表
16.优惠券优惠范围表(coupon_range)
定义哪些商品、品类、品牌可以用这张优惠券
17.优惠券领用表(coupon_use)
- 记录了优惠券被哪个用户领用了
18.收藏表(favor_info)
19. 订单明细表(order_detail)
- 一行对应一个订单中的一个sku,意味着下一次单会产生多条数据;
- 这个id就是order_detail_id
- 分摊金额就是订单总金额分摊到该商品上的价格
20.订单明细活动关联表(order_detail_activity)
- 此表记录一个订单参与了哪些活动,由于活动是sku参与的
- 之所以叫订单明细活动关联表,因为活动是商品维度上的,一个订单的某些商品参与了活动
21.订单明细优惠券关联表(order_detail_coupon)
- 订单使用了的优哪些惠券
- 其概念和订单明细活动关联表一样
22.订单表(order_info)
- 粒度是一个订单;id就是orderid
- 促销金额:订单中参与促销的商品的促销金额总和;别的金额也都是金额总和
- 这张表的orderstatus存储的是订单的最新状态
- Operate_time 指的是当前订单状态改变的时间
- expire_time:订单未支付时间超时取消
23.退单表(order_refund_info)
- 粒度是userid,orderid,skuid
- 此表只增不改
24.订单状态流水表(order_status_log)
- 记录所有订单的状态及状态变化的时间;由于订单表中的状态存储的是当前订单最新的状态,因此在这个表中维护订单的历史状态
25.支付表(payment_info)
存储支付记录,一行就是一次支付
26 退款表(refund_payment)
27 SKU平台属性表(sku_attr_value)
- 存储sku和平台属性的关联关系;
- 平台属性是sku的属性,sku通过这个表来和平台属性表进行关联获取sku的平台属性
- attr_id是平台属性,这里是冗余的,因为skuid通过属性值id可以找到属性id
28.SKU信息表(sku_info)
29 SKU销售属性表(sku_sale_attr_value)
- 存放sku和销售属性的关联关系;这个和sku平台属性表是一样的
- 销售属性表就是再商品详情页展示的sku属性
30.SPU信息表(spu_info)
31.SPU销售属性表(spu_sale_attr)
32.SPU销售属性值表(spu_sale_attr_value)
33.用户地址表(user_address)
- 由于一个用户会有多个地址,因此将用户地址和用户基本信息分开存储
34 用户信息表(user_info)
业务流程对表中数据的影响分析
收藏业务线
- 核心表:收藏表,存储了哪个用户收藏了哪个sku
- user和sku在收藏上是多对多的关系,因此引入中间表收藏表
加购业务
领用优惠券
业务流程:一个用户领了券
- 优惠券领用表插入一条记录,领券未使用,order_id为null,状态为1,获取时间有值,其他时间字段都为null
用户下单了
- 不会新增记录,只会改变
下单业务
业务过程:张三下了一个单,买了ABC三个商品
- 用户表不变
- 订单表插入一条数据
- 订单状态流水表会存入一个新订单的状态
- sku信息表不变
- 订单明细表插入3条数据,一条对应一个sku
- 如果订单中有sku参与了活动或者优惠券,那么就会在订单明细优惠券关联表和订单明细活动关联表插入参与活动的sku的个数条记录
支付订单:
- 订单状态流水表会插入一个新的记录
- 订单表会更新订单的状态字段
- 订单表和 订单状态流水表一直到订单完成后就不会变化了,完成的定义(取消订单、确认收货后一段时间没有申请退款、申请退款并退款完成)
支付业务
退单业务
退单表存储了哪个用户退了哪个订单中的哪个sku
退款业务
退款表没有直接关联用户表,而是可以通过订单表关联用户
评价业务
- 评价表存储了 哪个用户评价了哪个订单的哪个商品
- 评价业务只会新增,不会修改,属于不会变化的业务线,比较简单
后台管理系统表
商品
- 三级分类表和平台属性表的关联
点击三级分类->选择平台属性->平台属性值->获取对应的sku
活动
优惠券
优惠券范围表规定了优惠券的适用范围:
- 优惠券有多种类型:品类券关联分类、品牌券关联品牌、商品券关联sku