数据库实体设计 —— 商品(1.1)之商品信息
概述
本文主要分享商品模块的商品信息的数据库实体设计。
基于如下信息,逆向猜测数据库实体:
【护脸旁白】
笔者非电商行业出身 && 非有赞工程师,所以有错误或不合理的地方,烦请斧正和探讨。
有赞是个各方面都很 NICE 的公司,推荐 。
2. 背景了解
在看具体的数据库实体设计之前,我们先一起了解下电商的名词定义和有赞微商城界面。
2.1 名词定义
参考 《产品 SKU 是什么意思?与之相关的还有哪些?》 整理。
SKU:Stock Keeping Unit
中文翻译为库存单位。SKU 从库存视角,以库存进出为单位,可以是件、瓶、箱等等。
例如,iPhone 手机,按照规格( 颜色 + 内存 )可以组合出如下多个 SKU :
SKU | 颜色 | 内存 |
---|---|---|
A | 白色 | 16G |
B | 白色 | 64G |
C | 黑色 | 16G |
D | 黑色 | 64G |
可以看出,颜色(白色、黑色)与内存(16G、64G)组合排列出四种 iPhone SKU。
SPU:Standard Product Unit
中文翻译为标准产品单位。SPU 从产品视角,是产品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。通俗点讲,属性值、特性相同的商品就可以被称为一个 SPU 。例如 iPhone 8 就是一个 SPU ,iPhone 8 Plus 也是一个 SPU ,这个与商家无关,与颜色、款式、套餐等规格无关。
商品:
商家出售某个 SPU ,那么这就是一个商品。商品在 SPU 之上,增加了销售价格、促销活动、运费等等信息。另外,一个商品可以包含多个 SKU。
总结
现实的场景往往比定义复杂的多,在本文中,SKU 代表销售的单元。主要考虑如下两方面:
- 实际我们看到的商品详情页,购买的是一个销售组合单元。例如,很多商家会打包 【iPhone X :银色-64G-套餐三】,其中套餐三为赠送贴膜 + 保护壳等等,当然价格上会更贵。这明显就违背了我们上述提到 SKU 库存的概念,已经变成了多个 SKU 的销售组合单元。
- 一个商家会在不同平台销售商品,例如三只松鼠,其在天猫、京东等等平台都有官方旗舰店,同时也供货给其他渠道商,那么实际关系会变成如下图所示:
通过这样的方式,三只松鼠在不同的平台,定义不同的价格,设置不同的促销信息等等个性化的运营。
那么注意了!!!
下文开始,SKU 代表销售的单元
下文开始,SKU 代表销售的单元
下文开始,SKU 代表销售的单元
2.2 界面
- 商城端-购买页
- 运营后台-商品发布页
3. 数据库实体
整体实体类关系如下图:
全部实体在 Github 商品实体目录 下可见。
3.1 Item
Item 字段较多,我们进行简单的切块。
3.1.1 基础字段
/** * 编号 */ private Integer id; /** * 别名 * * 系统生成ÿ |