简单的写作缘由介绍
最近在做一个电商项目,这里将电商项目的后台数据架构记录一下
电商系统很复杂,涉及的东西很多,举个例子,简单的一个商品,涉及的状态就有很多,例如:库存、商品性质(实物、虚拟物品、票卷等)、商品状态、商品规格、销售开始及结束时间、系统排序、收藏、评论、是否限购、价格信息(市场价格、真实价格、实际售价、显示价格、规格价格、阶梯价格等等)、是否绑定物流信息、供应商等等,这里不一一列举。
由于电商的复杂性,这个系列会由最简单的场景开始介绍,然后不断的延伸功能,方便理解,所以可能会写好几篇
1.从最基础的开始
场景描述:
下面针对上面的最简单的电商流程设计一下数据表
- 用户(user)是一条数据,也有表结构,但是这里不做介绍,我们暂且用一窜数字代表一个用户uid=123456(user id),实际上根据这个uid可以查到一个用户的所有信息
- 商品(item)下面列举一下在这个场景中商品要用到的属性
字段 | 类型 | 说明 |
---|---|---|
id | num | 数据id |
name | string | 商品名称 |
sub_name | string | 商品副标题 |
title_pics | array | 商品封面图片数组 |
item_desc | string | 商品介绍 |
item_price | num | 商品价格 |
state | num | 商品状态:-2=删除,-1=下架,0=编辑状态,1=已提交,2=已上架,3=审核中,4=审核不通过,5=审核通过 |
storage | num | 库存 |
sales_count | num | 销售数量 |
有上面的这些字段,大致就可以满足最简单的电商流程场景,更详细的关于商品还有很多字段,例如:view_count(浏览量)、like_count(收藏量)、sys_index(系统排序参数)等等
- 订单(order)列举订单字段
字段 | 类型 | 说明 |
---|---|---|
id | num | 数据id |
state | num | 商品状态:-1=删除,0=在购物车中,1=待付款,2=已支付(待发货),3=已发货(待收货),4=待评价,5=已完成,6=已取消,7=维权中(申请退货) |
item_id | num | 订单对应的商品id |
name | string | 商品名称 |
sub_name | string | 商品副标题 |
title_pics | array | 商品封面图片数组 |
total_count | num | 购买商品数 |
item_price | num | 订单中商品价格 |
settlement_price | num | 结算价格 |
uid | num | 购买者id |
下面我们根据上面的数据表创建对应的数据
根据商品结构表item,我们可以生成一条商品数据
{
"id": 1299477521563661,
"state": 2,
"name": "可口可乐",
"sub_name": "可口可乐真好喝",
"title_pics": ["我是图片连接","我是图片连接"],
"item_desc": "我是商品介绍",
"sales_count": 0,
"item_price": 1,
"storage": 1000
}
- id字段是商品的数据id,不可以重复
- state字段标示了商品当前的状态,根据state我们可以对商品进行管理(主要作用的为了电商的管理后台管理商品),例如:上架操作、删除操作等等
有了上面的商品信息之后,当用户购买商品下单的时候,可以生成一条order数据
{
"id": 1299477521523456,
"state": 0,
"item_id":1299477521563661,
"name": "可口可乐",
"sub_name": "可口可乐真好喝",
"title_pics": ["我是图片连接","我是图片连接"],
"total_count": 10,
"item_price": 1,
"settlement_price": 100,
"uid": 123456
}
- id字段是订单的id,不可以重复
- state字段标示了订单的状态,这里具体的介绍一下,当用户选中商品,到支付页面的时候,这时候订单状态是1(待付款),用户付款后订单状态变为2(已付款),以此类推,根据不同的操作,将订单标示为不同的状态,这样根据state字段可以分类查找出不同状态的订单
- item_id字段,商品的id,可以根据此id查询出商品的所有信息
- uid字段,每个订单都对应一个用户
- 这里将商品的
name
、sub_name
、title_pics
拷贝,是为了展示订单信息的时候方便直接展示,这样就可以不用再查询item
表,省去一步查询操作
注意在用户购买付款后,对商品的storage
、sales_count
字段进行update
,实现相应的库存增减
以上的操作,大致就是一个最简单的电商流程,对应到实际的购物流程中就是,商品 -> 立即购买 (注意,这里没有将商品添加到购物车),在下一篇中,会介绍最简单的购物车下单流程