小编最近正在参与一个电商系统的设计与研发,在这里希望可以和大家分享一下在设计过程中遇到的问题和难点,写的不好地方,希望大家多多指点(ps:小编也是一名程序员)。
项目概述
- 正在设计和开发电商系统,是目前市场上可能比较成熟的,基于微信的或者移动端的多级分销系统,在这里主要介绍电商部分,分销部分不做详细说明。
- 电商系统的类型应该算是B2C模式(“商对客”是电子商务的一种模式,也就是通常说的直接面向消费者销售产品和服务商业零售模式),任何商家都可以在商城中出售自己的商品,用户通过浏览加入购物车然后下单即可购买商品,流程也是非常成熟。
- 核心系统说明
- 小编以为整个电商系统的核心分为两大部分:商品模块和订单模块。
- 商品模块:商品这一块,主要是涉及到商品SKU管理,SKU指的是库存进出计量的基本单元,可以是以件,盒,托盘等为单位。没有接触过电商的朋友可能会简单的以为不就是商品管理吗,很好处理。
- 其实不然,举一个简单的例子来说,商城中的一件衣服是一件商品,但是对于SKU来说可能是很多个,因为衣服可能对应不同尺码(M/L/XL/XXL)、颜色(红色/黑色/褐色/紫色)等,对于每一种尺码和颜色才是一个SKU,全部的SKU应该是尺码和颜色的全组合数量,在实际销售过程系统需要针对每一个特定尺码和颜色的衣服记录销量、库存、单价等重要信息,同时这些数据也是用来做统计分析,从而更好的指导商家如何管理商品。
- 当一种商品出现更多的属性的时候,对应的SKU可能是上百个,所以对于商城系统来说,商品的SKU绝对可以算是核心之一,其复杂程度可见一斑。
- 订单模块:小编以为订单系统无论在任何一个存在订单的系统的项目中,都会是整个系统核心的部分之一,订单通常要和支付和金钱相关,其重要的地位不言而喻。
- 电商系统的订单,相对其他系统可能较为复杂一些,尤其是在多商家多用户的B2C或者C2C系统中,主要是涉及到订单的合并、拆分、统一支付、分批退款等较为复杂的业务。
- 在实际的使用中,用户下单购买商品时,一个订单可能包含多个商家的商品,这个时候就会涉及到订单的合并与拆分,支付时需要一次支付,当系统保存订单时,有需要按照商家把订单拆分,并通知相应的商家。如果用户需要退款,需要按照每一个商家的订单进行退款,每次只能退回整个订单的部分金额,当然也可以整单退款。
- 数据库设计
- 商品模块:商品模块主要分为6张表:分类表、商品主表、商品SKU表、分类属性表、分类属性可选项表、商品属性表。
- 表关系如下图:
商品模块数据库设计
- 订单模块:主要分为3张表:订单支付表、商品订单表、订单物流表
- 表关系如下图:
商品订单表