在手机点餐领域(如美团、饿了么等平台),餐品(SPU) 和 规格(SKU) 是商品管理的核心概念,与电商中的 SPU(Standard Product Unit) 和 SKU(Stock Keeping Unit) 类似,但餐饮场景有独特的表现形式。以下是具体解析:
1. 核心概念定义
(1) 餐品(SPU)
-
定义:
SPU(Standard Product Unit) 是商品的标准单元,表示一个“品类”或“商品原型”。- 在点餐场景中,SPU 对应一个 基础餐品,例如:
- 奶茶(原味)
- 汉堡(基础款)
- 宫保鸡丁(标准份)
- 在点餐场景中,SPU 对应一个 基础餐品,例如:
-
特点:
- 无具体规格(如大小、口味、加料等)。
- 是商品分类和展示的基础单位。
- 不直接对应库存和价格,必须通过规格(SKU)具象化。
(2) 规格(SKU)
-
定义:
SKU(Stock Keeping Unit) 是库存管理的最小单元,表示一个商品的具体规格组合。- 在点餐场景中,SKU 对应 餐品+规格的组合,例如:
- 奶茶(大杯,少糖,加珍珠)
- 汉堡(加芝士,加薯条套餐)
- 宫保鸡丁(辣度:中辣,分量:大份)
- 在点餐场景中,SKU 对应 餐品+规格的组合,例如:
-
特点:
- 唯一性:每个 SKU 对应唯一的库存、价格、销量。
- 可购买性:用户最终下单的是 SKU,而非 SPU。
2. SPU 与 SKU 的对应关系
场景 | SPU(餐品) | SKU(规格) |
---|---|---|
奶茶店 | 原味奶茶 | 大杯/少糖/加珍珠、中杯/全糖/不加料 |
快餐店 | 牛肉汉堡 | 单点汉堡、汉堡+薯条套餐、汉堡+可乐套餐 |
中餐厅 | 宫保鸡丁 | 小份/微辣、大份/中辣、大份/特辣 |
3. 关键区别与设计逻辑
(1) SPU 的职责
- 定义商品的基础信息:名称、描述、图片、分类标签。
- 不涉及价格和库存,仅用于前端展示和商品聚合。
(2) SKU 的职责
- 定义商品的具体属性:规格(大小、口味、加料)、价格、库存。
- 用户下单时选择的最终商品单元。
(3) 规格的层级设计
在点餐系统中,规格通常分为两类:
- 单规格(独立选项)
- 例如:杯型(大杯、中杯)、辣度(微辣、中辣)。
- 每个选项可能影响价格(如大杯+2元)。
- 组合规格(多选项组合)
- 例如:套餐(汉堡+薯条+可乐)、加料(珍珠+椰果)。
- 组合后的总价需自动计算(如套餐优惠价)。
4. 实际场景示例
案例:奶茶店的商品管理
- SPU:珍珠奶茶(基础商品)
- SKU 规格组合:
- 杯型:大杯(+3元)、中杯(+0元)
- 糖度:全糖、少糖、无糖
- 加料:珍珠(+2元)、椰果(+1元)
用户下单时选择:
大杯 + 少糖 + 珍珠
➔ 生成唯一 SKU,价格 = 基础价 +3(杯型) +2(加料)。
5. 技术实现建议
(1) 数据库设计
-
SPU 表(
product_spu
)CREATE TABLE product_spu ( spu_id INT PRIMARY KEY, name VARCHAR(100), -- 商品名称(如“珍珠奶茶”) description TEXT, -- 商品描述 category_id INT, -- 分类(饮品、主食等) is_available BOOLEAN -- 是否上架 );
-
SKU 表(
product_sku
)CREATE TABLE product_sku ( sku_id INT PRIMARY KEY, spu_id INT, -- 关联 SPU spec_combination JSON, -- 规格组合(如 {"杯型":"大杯", "糖度":"少糖"}) price DECIMAL(10,2), -- 最终价格 stock INT, -- 库存 is_available BOOLEAN -- 是否可售 );
(2) 前端交互设计
- 用户选择 SPU(如“珍珠奶茶”)后,需动态加载关联的规格选项(杯型、糖度、加料)。
- 根据用户选择的规格组合,匹配唯一 SKU,并实时计算价格。
6. 常见误区
- 误区1:将 SPU 直接当作可售商品。
- 正确逻辑:用户无法直接购买 SPU,必须选择规格生成 SKU。
- 误区2:SKU 仅依赖单一规格(如仅杯型)。
- 正确逻辑:SKU 需覆盖所有规格组合(杯型+糖度+加料)。
总结
- SPU = 基础餐品(如“奶茶”),是商品的原型。
- SKU = 规格组合(如“大杯/少糖/加珍珠”),是用户实际购买的商品单元。
- 规格是 SKU 的构成要素,需支持动态组合和价格计算。
通过明确 SPU 和 SKU 的职责,可高效管理商品、库存和订单,避免价格或库存逻辑错误。