电商项目(一)---------Sku和Spu以及电商项目商品的设计思路

一,在电商项目里面为了准确的描述商品的区别,我们抽象出来两个概念,Spu和Sku这两个概念。

Spu(标准产品单位 ):一组具有共同属性的商品集

Sku(库存量单位):SPU商品集因具体特性不同而细分的每个商品

 

Spu 需要包括:id:主键                                                              Sku需要包括:id:主键
                           title:标题                                                                                spu_id:关联的spu
                           description:描述                                                                    price:价格
                           specification:规格                                                                  images:图片
                           packaging_list:包装                                                               stock:库存
                           after_service:售后服务                                                           颜色?
                           comment:评价                                                                        内存?
                           category_id:商品分类                                                             硬盘?
                           brand_id:品牌   

 

商品设计里面Spu最难得地方在于每种产品规格参数不同导致设计难度增大,截图说明商品不一样导致规格参数不一样。

以上截图从京东商城截图所得,不同产品之间的规格参数差异还是蛮大的。

Sku的设计难点在于它的规格是参数根据的用户的选择在变化,但是细心地话,可以发现我们在京东淘宝上面更改参数的时候,规格参数跟着变化,所以我们把问题抛给规格参数解决就好了。

 

二,数据库中商品的规格参数的设计

    我们的规格参数表应该和什么相对应,通过仔细观察分析可知,我们的同一个商品分类里面所有的商品所对应的规格参数是一样的。同时我们还应该知道,规格参数的显示是有讲究的,这里我们可以通过把某一类参数看成组,并且设计相应的数据库表与之对应,如上图所显示的主体和基本信息分别是两张不同的数据库表,那么我们的商品分类表和参数规格分组表是一对多关系。我们每一组里面的包括很多组属性信息,所有我们还需要单独设计一张数据库参数信息表,也是一对多的关系

1,tb_spec_group:参数规格分组表

数据库表中包括的字段:

  • id:主键

  • cid:商品分类id,一个分类下有多个模板,指定该组在哪个分类下

  • name:该规格组的名称。

CREATE TABLE `tb_spec_group` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `cid` bigint(20) NOT NULL COMMENT '商品分类id,一个分类下有多个规格组',
  `name` varchar(50) NOT NULL COMMENT '规格组的名称',
  PRIMARY KEY (`id`),
  KEY `key_category` (`cid`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8 COMMENT='规格参数的分组表,每个商品分类下有多个规格参数组';

 

图上就是红框内就是不同的参数规格分组表。

 

2,tb_spec_param :参数规格参数信息表

这里设计相对于参数规格分组表较为复杂一些,规格参数中有一部分是 SKU的通用属性,一部分是SKU的特有属性,而且其中会有一些将来用作搜索过滤,这些信息都需要标记出来。

通用属性

用一个布尔类型字段来标记是否为通用:

  • generic来标记是否为通用属性:

    • true:代表通用属性

    • false:代表sku特有属性

搜索过滤

与搜索相关的有两个字段:

  • searching:标记是否用作过滤

    • true:用于过滤搜索

    • false:不用于过滤

  • segments:某些数值类型的参数,在搜索时需要按区间划分,这里提前确定好划分区间

    • 比如电池容量,0~2000mAh,2000mAh~3000mAh,3000mAh~4000mAh

数值类型

某些规格参数可能为数值类型,这样的数据才需要划分区间,我们有两个字段来描述:

  • numberic:是否为数值类型

    • true:数值类型

    • false:不是数值类型

  • unit:参数的单位

CREATE TABLE `tb_spec_param` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `cid` bigint(20) NOT NULL COMMENT '商品分类id',
  `group_id` bigint(20) NOT NULL COMMENT '商品分类id',
  `name` varchar(255) NOT NULL COMMENT '参数名',
  `numeric` tinyint(1) NOT NULL COMMENT '是否是数字类型参数,true或false',
  `unit` varchar(16) DEFAULT '' COMMENT '数字类型参数的单位,非数字类型可以为空',
  `generic` tinyint(1) NOT NULL COMMENT '是否是sku通用属性,true或false',
  `searching` tinyint(1) NOT NULL COMMENT '是否用于搜索过滤,true或false',
  `segments` varchar(1000) DEFAULT '' COMMENT '数值类型参数,如果需要搜索,则添加分段间隔值,如CPU频率间隔:0.5-1.0',
  PRIMARY KEY (`id`),
  KEY `key_group` (`group_id`),
  KEY `key_category` (`cid`)
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8 COMMENT='规格参数组下的参数名';

 

 

 

 

 

 

  • 11
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
购物商城的Spu-Sku数据库设计主要是为了管理商品的库存和销售信息。Spu(Standard Product Unit)是商品的标准产品单位,通常指的是一组具有相同特征但可能有不同规格的商品,例如同一款衣服的不同颜色或尺码。Sku(Stock Keeping Unit)是商品的库存管理单位,是对Spu的具体细分,用于区分不同规格或属性的商品。 在数据库设计中,可以建立两个主要的表:Spu表和Sku表。Spu表用于存储商品的基本信息,包括商品的名称、描述、品牌、分类等。此外,可以为Spu表添加一些扩展字段,例如商品的图片、销售状态等。 Sku表用于存储商品的具体规格和库存信息,其中包括Spu的外键关联、商品的属性、规格、价格和库存数量等。通过外键关联,可以将Sku与其对应的Spu关联起来,实现SpuSku的多对一关系。同时,可以在Sku表中添加一些扩展字段,例如商品的条形码、上架时间等。 为了提高查询效率,可以在Sku表中添加索引,例如根据商品的价格、库存数量、销售状态等字段进行索引,以快速获取满足条件的商品信息。 此外,为了提高系统的可维护性和可扩展性,可以添加一些辅助表,例如属性表和属性值表,用于管理商品的属性信息。属性表用于存储商品的属性名称,属性值表用于存储属性的具体取值范围。 总之,购物商城的Spu-Sku数据库设计需要考虑SpuSku之间的关联关系,以及商品的基本信息和规格信息的存储和管理。通过合理的设计和优化索引,可以提高系统的查询性能和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值