购物商城数据库设计-订单系统设计
订单系统在整个商城体系中的作用非常重要,因为一些业务的开展往往是围绕订单来展开的。因此设计好一个订单系统是多么的重要。
我们根据用户的行为逐个设计表结构。
首先用户浏览商品,将看中的商品加入到购物车,这里应该有一张购物车表
购物车表(order_cart)
----
skuId
spuId
用户id
店铺id
商品名称
商品数量
商品价格
状态(下单之后对应商品就不应该显示在购物车了)
选中购物车中的某些商品,进行下单,订单表也就应运而生
订单表(order_info)
----
订单编号(如果对编号格式没什么要求,可使用雪花算法https://blog.csdn.net/u011499747/article/details/78254990来生成)
itemCount (商品项数量,不是商品个数,比如手机*2,鼠标*1,这里应该是2)
用户id
店铺id
下单时间
支付方式(可用数字表示,如1:支付宝,2:微信,3:银行卡...)
支付时间
outTradeNo 支付宝订单号
配送方式
期望配送日期
商品总额
运费
实际付款
订单状态(这里的状态可根据实际项目来定,可以定10,20,30..这样如果中间缺少一个状态可以添加进去)
如果购物车里面有多个店铺的商品,那么应该分别为这些店铺生成对应的订单。平台可以进行合并支付,但是订单还是要归店铺的。
上面是订单的基本信息,接下来是订单商品相关。
订单商品表(order_product)
---
订单编号
spuId
skuId
店铺id
商品名称
商品数量
商品价格
这里order_info与order_product是1对多的关系,一个订单可能有多个商品。
下单完成,等着发货,物流信息不能少,加下来是物流表
物流表(order_logistics)
---
订单标号
物流公司id
物流公司编号
快递单号
发货时间
收货时间
物流跟踪表(order_logistics_flow)
---
订单标号
物流公司标号
快递单号
remark(根据第三方接口返回来的结果信息)
加下来设计一下发票表
订单发票(order_invoice)
---
发票类型
发票抬头
发票内容
发票代码
发票号码
开票日期
校验码
密码区
服务名称
规格型号
数量
单价
金额
合计
税率
税额
销售方名称
销售方纳税人识别号
销售方地址电话
销售方开户行及账号
备注
收入款人
开票人
下单完成后进行支付,这里会有支付记录表,方便以后对账
支付记录表(order_pay_history)
---
订单编号
支付方式
订单总额
支付金额
pay_json(第三方支付平台参数信息,可使用json方式保存)
remark (备注)
用户收到货后,可以进行评论,下面是评论表
订单评论(order_product_comment)
---
spuId
skuId
评论用户id
用户昵称
点赞数
comment(评论内容)
评论分数(1~5分)
评论时间
product_info_json(评论的商品信息,如规格型号之类的)
image_json(评论图片)
好了,订单系统设计到此为了,当然围绕订单系统还有更多的业务可以开展,这里只做了一些基本的结构设计。
顺便说一句,如果一开始就想做分布式系统,建议把商品相关的表和订单表放在同一个数据库中,一则是因为订单业务需要查询商品相关的数据,二则是因为放在一起做事务比较容易,不然需要做分布式事务,加大了开发成本。前期项目规划的时候这点需要考虑到。