浅谈电商商品模型(Product Model)—— SPU 与 SKU 设计详解
在电商系统设计中,商品模型(Product Model)是整个系统最核心的数据结构之一。无论是 淘宝、京东、亚马逊,还是任何自建电商平台,都必须解决一个问题:
如何用数据结构描述一个商品,并支持不同规格、库存、价格的管理?
为了解决这个问题,电商系统普遍采用两个关键概念:
- SPU(Standard Product Unit)
- SKU(Stock Keeping Unit)
很多开发者刚接触电商系统时都会疑惑:
- 为什么要区分 SPU 和 SKU?
- 它们之间是什么关系?
- 在数据库中应该如何设计?
本文将从 概念、实例、系统结构、数据库设计以及用户购买流程等方面,讲清楚 SPU / SKU 的设计原理。
一、SPU 与 SKU 的核心概念
首先给出最简单的理解。
| 概念 | 含义 |
|---|---|
| SPU | 商品模型(抽象商品) |
| SKU | 具体商品(可销售商品) |
一句话总结:
SPU 描述商品是什么,SKU 描述具体卖哪一件商品。
二、一个典型电商例子:T恤商品
为了更直观地理解,我们来看一个电商平台销售 T恤 的例子。
1 SPU:商品模型
假设电商平台销售一款 T恤:
Nike 2024 夏季运动T恤
这就是一个 SPU。
SPU 用于描述商品的通用属性,例如:
| 属性 | 示例 |
|---|---|
| 品牌 | Nike |
| 商品名称 | 夏季运动T恤 |
| 材质 | 棉 |
| 款式 | 短袖 |
| 适用人群 | 男 |
这些信息对于所有该商品的变体来说都是一致的。
2 SKU:具体商品
同一款 T恤通常会有不同的规格,例如:
- 颜色
- 尺码
例如:
颜色
黑色
白色
尺码
M
L
XL
那么 SKU 就是这些规格组合后的具体商品:
| SKU | 颜色 | 尺码 |
|---|---|---|
| SKU1 | 黑色 | M |
| SKU2 | 黑色 | L |
| SKU3 | 黑色 | XL |
| SKU4 | 白色 | M |
| SKU5 | 白色 | L |
| SKU6 | 白色 | XL |
每一个 SKU 都是一个 可单独销售的商品。
三、电商商品页面的真实结构
当用户打开商品页面时,通常看到的是 SPU 页面。
例如:
商品:Nike 夏季运动T恤
页面上会提供规格选择:
颜色:黑色 / 白色
尺码:M / L / XL
当用户选择:
黑色 + L
系统会定位到:
SKU = 黑色 L
然后执行:
查询库存
展示价格
加入购物车
因此,SPU 是展示页面的主体,而 SKU 是交易的主体。
四、SPU 与 SKU 的结构关系
从数据结构上看,它们的关系如下:
SPU:Nike 夏季运动T恤
│
├── SKU:黑色 M
├── SKU:黑色 L
├── SKU:黑色 XL
├── SKU:白色 M
├── SKU:白色 L
└── SKU:白色 XL
关系总结:
- 一个 SPU 可以对应多个 SKU
- 每个 SKU 只属于一个 SPU
换句话说:
SPU(商品模型)
↓
多个 SKU(具体商品)
五、为什么电商系统必须设计 SPU
如果系统中没有 SPU 概念,会出现什么问题?
假设每个商品变体都独立存储:
Nike 黑色 M T恤
Nike 黑色 L T恤
Nike 黑色 XL T恤
Nike 白色 M T恤
Nike 白色 L T恤
Nike 白色 XL T恤
会带来一系列问题:
| 问题 | 说明 |
|---|---|
| 商品信息重复 | 商品描述需要重复维护 |
| 商品页面分散 | 用户体验差 |
| 搜索困难 | 无法统一展示商品 |
引入 SPU 后:
SPU:Nike 夏季运动T恤
只需要一个商品页面即可。
六、再看一个更经典的例子:手机商品
假设电商平台销售一款手机。
SPU
iPhone 15
SPU 包含公共属性:
| 属性 | 值 |
|---|---|
| 品牌 | Apple |
| 型号 | iPhone 15 |
| 屏幕 | 6.1 英寸 |
| 处理器 | A16 |
SKU
SKU 由不同规格组合而成:
颜色
黑色
蓝色
粉色
容量
128G
256G
512G
SKU 组合如下:
| SKU | 颜色 | 容量 |
|---|---|---|
| SKU1 | 黑色 | 128G |
| SKU2 | 黑色 | 256G |
| SKU3 | 黑色 | 512G |
| SKU4 | 蓝色 | 128G |
| SKU5 | 蓝色 | 256G |
| SKU6 | 蓝色 | 512G |
| SKU7 | 粉色 | 128G |
| SKU8 | 粉色 | 256G |
| SKU9 | 粉色 | 512G |
因此:
SPU:iPhone 15
│
├── SKU:黑色 128G
├── SKU:黑色 256G
├── SKU:蓝色 128G
└── ...
七、电商系统中的商品结构
典型商品系统结构如下:
商品类目
│
└── SPU
│
├── 商品描述
│
└── SKU
│
├── 规格属性
├── 价格
└── 库存
解释:
| 层级 | 作用 |
|---|---|
| 类目 | 商品分类 |
| SPU | 商品模型 |
| SKU | 具体商品 |
| 库存 | 库存管理 |
| 价格 | 价格策略 |
八、电商数据库设计示例
在数据库中,SPU 和 SKU 通常分开存储。
1 SPU 表
| 字段 | 说明 |
|---|---|
| spu_id | SPU ID |
| name | 商品名称 |
| brand | 品牌 |
| category | 商品类目 |
| description | 商品描述 |
2 SKU 表
| 字段 | 说明 |
|---|---|
| sku_id | SKU ID |
| spu_id | 所属SPU |
| price | 价格 |
| stock | 库存 |
3 SKU规格表
SKU 的规格通常采用独立表:
| sku_id | 属性 | 值 |
|---|---|---|
| 1001 | 颜色 | 黑色 |
| 1001 | 尺码 | L |
例如:
SKU 1001
颜色:黑色
尺码:L
九、电商用户购买流程
当用户购买商品时,系统流程如下:
用户进入商品页面(SPU)
│
选择规格(颜色 / 尺码)
│
系统定位 SKU
│
查询库存
│
生成订单
流程图:
SPU 页面
↓
选择规格
↓
定位 SKU
↓
检查库存
↓
下单
十、再看一个现实电商例子:运动鞋
假设平台销售一款跑鞋:
Adidas UltraBoost 跑鞋
规格:
颜色:黑 / 白
尺码:40 / 41 / 42 / 43
SKU 数量为:
2 × 4 = 8
SKU 列表:
黑40
黑41
黑42
黑43
白40
白41
白42
白43
十一、总结
最后总结 SPU 与 SKU 的核心区别:
| 概念 | 含义 |
|---|---|
| SPU | 商品模型 |
| SKU | 具体商品 |
| 关系 | 一个 SPU 对应多个 SKU |
用一句话形容:
SPU:商品是什么
SKU:具体卖哪一件商品
例如:
SPU:Nike T恤
SKU:黑色 L
十二、结语
SPU / SKU 模型是电商系统商品设计的基础,它解决了以下问题:
- 商品抽象建模
- 商品规格组合
- 库存精细管理
- 商品展示统一
在大型电商系统中,这一模型还会继续扩展,例如:
SPU
↓
SKU
↓
库存系统
↓
价格系统
↓
订单系统
理解 SPU / SKU,不仅是电商系统设计的入门,也是构建 高并发商品系统、库存系统与订单系统的重要基础。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)