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

Logo

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

更多推荐