不管开发B2C、B2B2C、还是B2B等电商项目,不可避免的要实现上面的详情页面。页面展示中,商品的名称、商品的主图、商品的详情都容易搞定。就是商品种类繁多后,每一种商品具有不同的规格,不同的规格就会对应不同的价格和库存,这点比较难搞。以上面图为例,不同的机身颜色和存储容量的组合,会出现不同的库存以及不同的价格。

下面针对sku如何实现这个功能,而不相干的字段就屏蔽掉。

分类的数据库表,商品太多,一般会按照分类进行管理。比如分手机的分类、电脑的分类。

CREATE TABLE `category` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',`parent_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '父级主键',`category_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '分类名称',PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='分类表';


属性key的数据库表,一般一个分类,会拥有差不多的属性。比如手机,都有内存、颜色等属性。

CREATE TABLE `attribute_key` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',`category_id` int(255) unsigned NOT NULL COMMENT '分类外键',`attribute_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '属性ke值',PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='属性key表';


属性value的数据库表,根据数据库设计的范式原则,属性及属性值会分开不同的表进行存储,所以会多一个表来存属性值。

CREATE TABLE `attribute_value` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',`attribute_id` int(10) unsigned NOT NULL COMMENT '属性key外键',`attribute_value` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '属性value值',PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='属性value表';


有了上面这些前提表,这个时候后台新增商品的时候,就需要商品表和规格表。新增商品信息spu及规格信息sku,先存储goods信息,存储成功后再存储goods_specs。一起是一个事务。

CREATE TABLE `goods` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',`category_id` int(10) unsigned NOT NULL COMMENT '分类外键',`attribute_list` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '规格列表',PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='商品表';

CREATE TABLE `goods_specs` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',`goods_id` int(10) unsigned NOT NULL COMMENT '商品外键',`goods_specs` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '商品规格',`goods_stock` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '商品库存',`goods_price` decimal(10,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '商品价格',PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='规格表';


这样子,我们就把把不同商品的不同规格存储到数据库了


当前端点击不同的机身颜色、存储容量后,前端带着goods_id和goods_specs字段去请求goods_specs表获取库存和价格,类似执行了下面这条sql语句

SELECT * FROM goods_specs WHERE goods_id='1' AND goods_specs='{"内存": "128GB", "颜色": "黑色"}';


整体逻辑跑通后,剩下的就是在这个基础上不断的优化完善,最终达到产品想要的效果。

电商系统,剖析商品模块中商品表(spu)、规格表(sku)的数据库是如何设计的相关推荐

  1. 软件架构-解密电商系统营销-会员模块业务

    上次说了商品,商品分类,品牌,分类的属性,规格.很多电商网站例如:京东,国美,苏宁他们的商品都是存储在redis中的,通过请求获取到的redis进行js的渲染动态的展示商品的信息. (一)营销模块 营 ...

  2. HH SaaS电商系统的商城模块设计

    文章目录 好获SaaS电商系统层级关系 商城实体 商城运营模式 商城可选子系统 创建商城 商城管理后台 有供应系统和无供应系统的B2C和混合模式的商城系统对比 有仓储系统和无仓储系统的B2C和混合模式 ...

  3. HH SaaS电商系统的跨境商品展示、下单、清关、出库全流程设计

    跨境商品的展示 后补 跨境商品的下单 在订单确认页面就要按SKU拆单,所以跨境销售订单的主单和子单是一对一的关系 多种进口渠道的商品在同个销售主单中,在进口清关.收货.货款结算时会出现问题,假设销售订 ...

  4. 品优购电商系统开发 第5章 商品录入【1】

    课程目标 目标1:完成商品分类功能 目标2:了解电商概念SPU 和SKU 目标3:掌握富文本编辑器的使用 目标4:掌握上传服务器FastDFS 目标5:掌握angularJS图片上传 1.商品分类 1 ...

  5. HH SaaS电商系统的品牌模块设计

    品牌和商品基础类目属于多对多的关系 创建品牌时必须关联商品基础类目,且只能关联三级类目,至少关联一种 品牌只能由租户统一进行维护管理,供应商.商家.商城可以申请新品牌,但是由租户进行审核 品牌被删除或 ...

  6. 电商系统的售后模块设计

    文章目录 售后单实体 方案一 方案二 服务类型 可选售后服务判断规则 退款类型 售后截止时间 金币和优惠券如何返还 买家端订单列表的"售后按钮"逻辑说明 服务端处理逻辑 买家端操作 ...

  7. HH SaaS电商系统的支付模块设计

    文章目录 支付单 支付单状态流转逻辑说明 支付相关实体 支付流水记录 支付方式 支付渠道 支付单 销售订单生成时,同步生成支付单,如果销售订单的应付金额由首付款和尾款组成,那么会生成两个支付单 支付单 ...

  8. 前端学习(1888)vue之电商管理系统电商系统之在sessionStrorage中保存按钮的激活状态

    目录结构 router.js import Vue from 'vue' import Router from 'vue-router' import Login from './components ...

  9. 前端学习(1874)vue之电商管理系统电商系统之处理项目中eslint语法报错

    目录结构 router.js import Vue from 'vue' import Router from 'vue-router' import Login from './components ...

最新文章

  1. 35 利用构造函数和原型对象实现继承
  2. Spring@Cacheable注解在类内部调用失效的问题
  3. php盒子模型,CSS盒子模型介绍
  4. 【数据库学习】——windows、MySQL构建新闻管理系统(控制台版)
  5. 使用idea创建JavaWeb项目
  6. 海量数据的topK问题
  7. mysql spider引擎安装_mysql spider 引擎的使用
  8. C#调用GDI+1.1中的函数实现高斯模糊、USM锐化等经典效果。
  9. 局域网互访终结贴(转载)
  10. shiro安全框架 面试题
  11. python写文件指定编码_python指定写入文件时的编码格式方法
  12. python实现京东联盟API接口对接
  13. 支付宝接口对接指南(一、支付宝文档解读和支付宝侧沟通)【保姆级】
  14. 图片轮播且可以实现5张翻页
  15. 用matlab实现高斯信道建模
  16. QRCode生成二维码和解析二维码
  17. 前端网页配色网站推荐
  18. 形象的解释一下ERP系统的运作流程
  19. PHP最新B站视频直链解析源码下载+亲测可用
  20. 思维的技术:如何破解工作生活中的两难冲突?

热门文章

  1. RLS算法-公式初探
  2. html简单边框制作--特效文字制作及代码,HTML音画介绍之一--基本原理和边框的制作...
  3. Android模拟器编程,Android模拟器入门[转]
  4. Linux挂载Windows网络共享文件夹
  5. 使用 Wall 搭建个人照片墙和视频墙
  6. 百度地图滑动后获取屏幕的中心点百度坐标
  7. Spring Data JPA 查询方法的命名语法与参数
  8. 【textarea】按下回车发送消息不换行,怎么实现?
  9. oracle中活着的写法,oraclekk
  10. leetcode打家劫社简单实现--python