在电商系统设计中,商品模型(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_idSPU ID
name商品名称
brand品牌
category商品类目
description商品描述

2 SKU 表

字段说明
sku_idSKU 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,不仅是电商系统设计的入门,也是构建 高并发商品系统、库存系统与订单系统的重要基础。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐