Java生鲜电商平台-商品基础业务架构设计-商品分类设计

Java生鲜电商平台-商品基础业务架构设计-商品分类设计

说明:我们搞过电商的人都可以体会到,搞生鲜电商是最复杂的,为什么复杂呢?我总结了有以下几个业务特性决定的:

1. 业务本身比较复杂。

2. 商品都是非标准化的商品。

3. 各种售后问题层出不穷.

4. 人心善变,各种变化.

好了,不多说废话了。我们开始聊下今天的商品分类的架构设计。

名称简介: 商品分类也叫做商品类目。核心的意义就是把商品按照某种分类区分开,方便客户寻找自己的商品。

要理解生鲜电商的商品分类,请先读懂以下对话:

1.客户: 你这个小白菜多少钱一斤呢?老板

2.老板:2.7元一斤,10元4斤.

3.客户:你这个小白菜是哪个产的呢?

4.老板:这个是襄阳的生产的,非常的甜,冬天下面条非常好吃,你看看,这个都是刚批发回来的,很新鲜.

5.客户: 好的,那老板你跟我装10斤吧。

6.老板:好的,稍等下就跟你装。

7.老板:装好了,请问你是支付宝还是微信支付,还是现金支付呢?

8.客户:我用支付宝吧,我来扫你。

9.老板:好的。

10.支付宝:支付宝喊话:支付宝到账10元。

11.老板:那你拿好,慢走。

12.客户:好的。

业务分析:上面是很简单的一句对话,我们从中需要理解以下几种设计架构:

1. 从第一句话:(1.客户: 你这个小白菜多少钱一斤呢?老板),客户是在选购商品,是通过肉眼来选择的,那么老板是根据分类来进行摆放的,左手边是常见蔬菜,右手边是土豆等其他品类的蔬菜,其中卖得好的都放在眼前.

2. 从第二句话:(2.老板:2.7元一斤,10元4斤.),这个是商品的售卖规格,同一个商品(SPU),有几种售卖规格(SKU),  理论上买4斤是需要10.8元的,但是老板为了卖得快,吸引客户,所以采用了满减的促销手段,目前就是快速的销售自己是商品,减少库存.

3. 从第三,四句话:(3.客户:你这个小白菜是哪个产的呢?4.老板:这个是襄阳的生产的,非常的甜,冬天下面条非常好吃,你看看,这个都是刚批发回来的,很新鲜.)这个是问商品的产地以及品牌。

4. 从第五句话:(5.客户: 好的,那老板你跟我装10斤吧。),这个就是商品的下订单的过程.

5. 从第7句话:(7.老板:装好了,请问你是支付宝还是微信支付,还是现金支付呢?)  这个就是订单的支付问题。

6. 从最后两句话:(11.老板:那你拿好,慢走。12.客户:好的。)   这个就是物流问题,是自取还是要配送.

业务总结:

           根据以上分析,我们得出了以下几个流程:

           客户选购商品--->选择购买规格--->下订单--->支付订单---->配送完成--->交易完成

           这个就是大家的购物流程。平常的几句对话就可以分析出来.

业务架构:

       我们业务架构需要涉及到那几个方面的内容呢?

      1. 商品分类。

      2. 商品.

      3. 商品的售卖规格。

      4.  商品的配送

      5.  商品的订单。

      6.  订单的支付.


今天这篇博客不可能讲解完所有的,那么我们就先讲解分类:

1. 商品的分类设计

   基础属性设计:分类ID,分类编码,分类名称,父类ID,状态,分类排序,分类备注,分类状态,创建时间。

CREATE TABLE `goods_category` (
  `category_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键(自增ID)',
  `category_code` varchar(60) DEFAULT NULL COMMENT '编码',
  `category_name` varchar(60) DEFAULT NULL COMMENT '名称',
  `parent_id` int(11) DEFAULT NULL COMMENT '父级ID',
  `category_seq` int(11) DEFAULT NULL COMMENT '分类排序',
  `category_status` tinyint(4) DEFAULT NULL COMMENT '状态(1在用,2停用)',
  `category_remarks` varchar(255) DEFAULT NULL COMMENT '分类备注',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`category_id`)
) ENGINE=InnoDB AUTO_INCREMENT=282 DEFAULT CHARSET=utf8;

  

简介说明:

1.category_id 数据库自动增加,属于分类的ID.

2.category_code,这个是属于分类的编码,比如 我们理解为一级分类为:01,目的是为了方便记忆与寻找。

3.category_seq 这个是为了方便分类的排序用的。一般用小到大排序。

4.category_status 这个是为了表示分类可用于不可用的,有些分类需要就需要打标删除,实际的业务场景中是不会用delete 这种物理删除的。

5.category_remarks 这个是分类的备注,备注的核心意义就是特殊性质的特别补充说明

6. create_time 这个就是常见时间。



这个表设计是否存在问题呢?

1. 分类名称与分类编码不可重复,需要常见唯一键的索引。

2. 一级别的分类,parentId默认就是0,所以需要增加默认值。

3. 分类状态默认就是可用的,所以需要加默认值。

4. 很多数据不能为空需要加上不为空的设计,


综合以上分析,我们最终设计出来了下面的表:

CREATE TABLE `goods_category` (
  `category_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键(自增ID)',
  `category_code` varchar(60) NOT NULL COMMENT '编码',
  `category_name` varchar(60) NOT NULL COMMENT '名称',
  `parent_id` int(11) NOT NULL DEFAULT '0' COMMENT '父级ID,默认为0',
  `category_seq` int(11) DEFAULT '0' COMMENT '分类排序',
  `category_status` tinyint(4) DEFAULT '1' COMMENT '状态(1在用,2停用)',
  `category_remarks` varchar(255) DEFAULT NULL COMMENT '分类备注',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`category_id`),
  UNIQUE KEY `unique_code` (`category_code`),
  UNIQUE KEY `unique_name` (`category_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

总结:对事物的学习与架构需要在足够了解业务的基础上才可用设计得很好,多思考,多总结

联系QQ:137071249

QQ群:793305035

    

原文地址:https://www.cnblogs.com/jurendage/p/11131339.html