电商系统设计之商品 (上)
电商大伙每天都在用,类似某猫,某狗等。 电商系统设计看似复杂又很简单,看似简单又很复杂 本章适合初级工程师及中级工程师细看,大佬请随意
前言
商品的设计是电商系统中占据重要地位,如何设计出高扩展,高性能的商品系统并非一件简单的事情,我的设计是观摩互联网各大佬的设计后自行研究的,并非完全正确,但也不完全错误,现在我设计的这套电商系统已经在使用,如果在逻辑上遇到什么问题,会及时修改我关于电商系统相关文章的设计思想部分。
元素
见上图,本次我们先讲解下系统规格与自定义规格、系统属性与自定义属性的关于及其他们存在的意义。
SPU
SPU(Standard Product Unit)标准化产品单元
什么叫标准化产品单元?
抛弃标准化一词来看,产品单元?就是以一个产品为一个单位。例如你是手记销售商,你在厂家进货的时候说我要iphonex 100部型号随意规格随意,进货的时候没考虑到内存或者屏幕尺寸,这个时候你就把iphonex这个商品当作一个单位。这就是产品单位。再谈标准化,只是一些人或一个人制定的这么一个标准,所以称为标准化产品单元,不要拿百度百科上的解释反驳我,我只是用更通俗易懂的方式解释一下SPU。
例如iphonex的价格也不同的地方,分别为iphonex 64g 是8888,iphonex 256g是18888。这个时候我们不能建立2个spu去管理这2个商品。这个时候就需要用到spu的概念了。
SKU
SKU(Stock Keeping Unit)库存量单元
什么叫库存量单位?
字面意思来看,库存则是指的某个商品的某个规格还有多少件,这个时候就不能只针对商品了。上面的例子iphonex有2个不同规格的商品,这个时候无法计算其每个规格的库存(创建2个商品可是不切实际,未来管理会很复杂,就例如安踏的跑鞋有十几个尺码,难道要创建十几个商品吗?),此时只能针对当前商品再创建子商品,我们叫它规格,例如iphonex 有 存储和颜色2个规格
有木有发现还是有点问题?那具体的存储大小与具体颜色该如何表达呢?这个时候需要创建规格的子商品,我们称他为属性
这个每个属性的结合则就是一个新的商品,我们称它为SKU,一个SPU对应着N个SKU
这样就生成了N个商品
- iphonex 64G白色
- iphonex 32G黑色
- iphonex 256G白色 等等...
系统规格/属性
为什么要设立系统规格属性呢?
盗用一张淘宝的图,以上都是根据分类品牌设定好的规格及属性
主要是为了方便商家添加商品及其对商品的规格属性进行统一的管理,当然一个电商系统在前期运营的情况下尽量减少系统属性规格的使用(方便商家入住嘛)。
自定义属性就不用说了。不让商家添加自己的规格和尺码什么的怎么能行?
数据
具体数据表的设计如下
product
商品表 (spu表)
CREATE TABLE `product` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '商品标题',`category_id` int(11) NOT NULL COMMENT '商品分类编号',`mer_id` int(11) NOT NULL COMMENT '商家编号',`freight_id` int(11) DEFAULT NULL,`type_id` tinyint(4) NOT NULL COMMENT '类型编号',`sketch` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '简述',`intro` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '商品描述',`keywords` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '商品关键字',`tags` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '标签',`marque` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '商品型号',`barcode` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '仓库条码',`brand_id` int(11) NOT NULL COMMENT '品牌编号',`virtual` int(11) NOT NULL DEFAULT '0' COMMENT '虚拟购买量',`price` decimal(8,2) NOT NULL COMMENT '商品价格',`market_price` decimal(8,2) NOT NULL COMMENT '市场价格',`integral` int(11) NOT NULL DEFAULT '0' COMMENT '可使用积分抵消',`stock` int(11) NOT NULL COMMENT '库存量',`warning_stock` int(11) NOT NULL COMMENT '库存警告',`picture_url` varchar(125) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '封面图',`posters` varchar(125) COLLATE utf8mb4_unicode_ci DEFAULT NULL,`status` tinyint(4) NOT NULL COMMENT '状态 -1=>下架,1=>上架,2=>预售,0=>未上架',`state` tinyint(4) NOT NULL DEFAULT '0' COMMENT '审核状态 -1 审核失败 0 未审核 1 审核成功',`is_package` enum('0','1') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0' COMMENT '是否是套餐',`is_integral` enum('0','1') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0' COMMENT '是否是积分产品',`sort` int(11) NOT NULL DEFAULT '99' COMMENT '排序',`deleted_at` timestamp NULL DEFAULT NULL,`created_at` timestamp NULL DEFAULT NULL,`updated_at` timestamp NULL DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
复制代码
system_attribute
系统规格表
CREATE TABLE `system_attribute` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`category_id` int(11) NOT NULL COMMENT '商品类别编号',`name` varchar(25) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '属性名称',`sort` int(11) NOT NULL DEFAULT '999' COMMENT '排列次序',PRIMARY KEY (`id`),KEY `product_attribute_category_id_name_index` (`category_id`,`name`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
复制代码
system_attribute_option
系统属性表
CREATE TABLE `product_attribute_option` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`name` varchar(125) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '选项名称',`attr_id` int(11) NOT NULL COMMENT '属性编码',`sort` int(11) NOT NULL DEFAULT '999' COMMENT '排序',PRIMARY KEY (`id`),KEY `product_attribute_option_name_attr_id_index` (`name`,`attr_id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
复制代码
product_attribute_and_option
规格属性绑定表
CREATE TABLE `product_attribute_and_option` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`sku_id` int(11) NOT NULL COMMENT 'sku编码',`option_id` int(11) NOT NULL DEFAULT '0' COMMENT '属性选项编码',`attribute_id` int(11) NOT NULL COMMENT '属性编码',`sort` int(11) NOT NULL DEFAULT '999' COMMENT '排序',`supplier_option_id` int(11) DEFAULT NULL,PRIMARY KEY (`id`),KEY `product_attribute_and_option_sku_id_option_id_attribute_id_index` (`sku_id`,`option_id`,`attribute_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6335 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
复制代码
product_sku
sku表
CREATE TABLE `product_sku` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`product_id` int(11) NOT NULL COMMENT '商品编码',`name` varchar(125) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'sku名称',`img` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '主图',`price` decimal(8,2) NOT NULL COMMENT '价格',`stock` int(11) NOT NULL DEFAULT '0' COMMENT '库存',`code` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '商品编码',`barcode` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '商品条形码',`data` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'sku串',PRIMARY KEY (`id`),KEY `product_sku_name_product_id_index` (`name`,`product_id`)
) ENGINE=InnoDB AUTO_INCREMENT=530 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
复制代码
product_attribute
自定义规格表
CREATE TABLE `product_attribute` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`product_id` int(11) NOT NULL COMMENT '商品编码',`name` varchar(125) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '规格名称',`sort` int(11) NOT NULL DEFAULT '999' COMMENT '排序',PRIMARY KEY (`id`),KEY `product_supplier_attribute_name_product_id_index` (`name`,`product_id`)
) ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
复制代码
致谢
其实在商品的设计层面看懂后还是很简单的,后续文章主要讲解的更多的是这些数据该如何存储更合理。如果设计不合理例如商品添加很简单,但是修改商品就很复杂。在前期设计上我们要尽量避免这些“坑”
谢谢你看到这里,希望我的文章能够帮助到你。有什么问题可以在评论区留言,我看到会第一时间回复。谢谢
电商系统设计之商品 (上)相关推荐
- 电商系统设计之商品(上)
电商大伙每天都在用,类似某猫,某狗等. 电商系统设计看似复杂又很简单,看似简单又很复杂.本章适合初级工程师及中级工程师细看,大佬请随意 1. 前言 商品的设计在电商系统中占据重要地位,如何设计出高扩展 ...
- 电商系统设计之商品(下)
电商大伙每天都在用,类似某猫,某狗等. 电商系统设计看似复杂又很简单,看似简单又很复杂 本章适合初级工程师及中级工程师细看,大佬请随意 1. 前言 商品系统与订单系统(交易系统)是相铺相成的,当买家购 ...
- 电商系统设计之商品 (下)
电商大伙每天都在用,类似某猫,某狗等. 电商系统设计看似复杂又很简单,看似简单又很复杂 本章适合初级工程师及中级工程师细看,大佬请随意 前言 商品系统与订单系统(交易系统)是相铺相成的,当买家购买商品 ...
- 电商系统设计之商品上架
近期根据客户的不同需求,定制开发了好几款电商系统,在这整个开发过程中,积攒了一些开发经验和心得,后期我会写一系列文章,来记录我对开发电商系统的理解,这其中会包含一些后台逻辑设计.数据库设计.小程序设计 ...
- java电商快递费收取_电商系统设计之运费模板(上)
电商大伙每天都在用,类似某猫,某狗等. 电商系统设计看似复杂又很简单,看似简单又很复杂 本章适合初中级工程师细看,大佬请随意 前言 在订单系统中,运费模板是其中一个重要组成部分,看似简单的一个设置,在 ...
- java运费模板设计_电商系统设计之运费模板(上)
电商大伙每天都在用,类似某猫,某狗等. 电商系统设计看似复杂又很简单,看似简单又很复杂 本章适合初中级工程师细看,大佬请随意 前言 在订单系统中,运费模板是其中一个重要组成部分,看似简单的一个设置,在 ...
- 电商系统设计之运费模板(上)
电商大伙每天都在用,类似某猫,某狗等. 电商系统设计看似复杂又很简单,看似简单又很复杂 本章适合初中级工程师细看,大佬请随意 前言 在订单系统中,运费模板是其中一个重要组成部分,看似简单的一个设置,在 ...
- HH SaaS电商系统的商品系统设计
文章目录 商品信息结构 商品信息总结构 商品信息结构图 发布商品 商品类型 虚拟商品 服务商品 为什么服务商品要分类 前端根据服务商品类型来设计不同的界面和交互 订单状态和服务类型有关 商品档案上下架 ...
- PHP电商运费模板,电商系统设计之运费模板(下)
电商大伙每天都在用,类似某猫,某狗等. 电商系统设计看似复杂又很简单,看似简单又很复杂 本章适合初中级工程师细看,大佬请随意 前言 在订单系统中,运费模板是其中一个重要组成部分,看似简单的一个设置,在 ...
- java运费模板设计_电商系统设计之运费模板(下)
电商大伙每天都在用,类似某猫,某狗等. 电商系统设计看似复杂又很简单,看似简单又很复杂 本章适合初中级工程师细看,大佬请随意 前言 在订单系统中,运费模板是其中一个重要组成部分,看似简单的一个设置,在 ...
最新文章
- php+下载+网路错误,下载zip文件“网络错误失败”(PHP / NGINX)
- java求任意个数集合的笛卡尔积,Java中任意集的笛卡尔积
- Deep Belief Networks
- Jquery 对话框确认
- 微信上传图文消息素材40007,invalid media_id hint
- c语言输出11258循环,c/c++内存机制(一)(转)
- 【转载】解决在Vim中鼠标右键不能粘贴
- 360云盘直链解析PHP,360云盘分析直链解析
- FFMPEG 实现 YUV,RGB各种图像原始数据之间的转换(swscale)
- 20一个自定义集合的自述
- 函数-6已知输入为一个列表,列表中的元素都为整数,我们定义元素筛选函数为foo,功能是检查获取传入列表对象的所有奇数位索引(注意列表的索引是从0开始的)对应的元素,并将其作为新列表返回给调用者。
- cad没有命令输入框_cad命令输入框没了(CAD 输入命令栏显示在绘图的屏幕上怎么设置)...
- als算法参数_ALS算法
- Java作业(2020 12 05)
- C++五子棋源码(Qt版)
- 部署本地thinkphp6(iis+php7)
- 计算机网络--自顶向下方法学习笔记
- 河北工业大学c语言寻宝游戏,计算机技术基础(c语言)课程设计寻宝游戏.doc
- 北大集训2018垫底记
- c语言链表复数实验,十字复数链表在机电暂态仿真程序中的应用.pdf