定义
SPU(Standard Product Unit,标准产品单位
- SPU 是某个商品的通用属性的集合,用来描述某个产品的核心特性。
- 在数据库中,它通常用
pms_product
表 来表示。 - 举例:
iPhone XS
是一个 SPU,它描述了这款手机的基础信息,比如品牌(Apple)、型号(XS)、核心功能等。
SKU(Stock Keeping Unit,库存量单位)
- SKU 是某个商品在具体规格上的唯一标识,包含了更精细的属性和库存信息。
- 在数据库中,它通常用
pms_sku_stock
表 来表示。 - 举例:
iPhone XS 公开版 64G 银色
是一个 SKU,因为它具体到颜色(银色)和存储容量(64G),同时包含对应的库存量和价格等信息。
SPU 和 SKU 的关系:
- 一个 SPU(
pms_product
)可以有多个 SKU(pms_sku_stock
),它们之间是一对多的关系。 - SKU 是 SPU 的实例化,SKU 的价格、库存、促销等信息可以独立设置。
数据库中的 SPU-SKU 关系
SPU 在数据库中的实现:pms_product
- SPU(标准产品单位) 是
pms_product
表中的每一行记录。 - 描述 SPU 的字段包括:
-
id
:唯一标识 SPU。name
:SPU 的商品名称(如 "iPhone XS")。brand_id
:品牌 ID,用于关联品牌(如 Apple)。description
:SPU 的描述信息。weight
和freight_template_id
:通用的物流信息。product_attribute_category_id
:SPU 支持的属性分类(如颜色、存储容量)。
SKU 在数据库中的实现:pms_sku_stock
- SKU(库存量单位) 是
pms_sku_stock
表中的每一行记录。 - 描述 SKU 的字段包括:
-
sku_code
:SKU 的唯一标识(如 "IPXS64SILVER")。product_id
:关联 SPU 的 ID(外键,指向pms_product.id
)。sp_data
:SKU 的规格数据(如颜色=银色、存储容量=64G)。price
:SKU 的价格(可以和 SPU 的基础价格不同)。stock
:SKU 的库存数量。promotion_price
:SKU 的促销价格。
具体例子:iPhone XS 的 SPU-SKU 数据库实现
SPU 数据(pms_product
表中的一条记录):
字段名 | 值 |
| 1 |
| iPhone XS |
| 1 (Apple) |
| Apple iPhone XS 全新智能手机 |
| 0.5(公斤) |
| 2 |
SKU 数据(pms_sku_stock
表中的多条记录):
字段名 | 值 |
| 1 |
| 1 (关联 SPU 的 ID) |
| IPXS64SILVER |
| {"颜色": "银色", "存储": "64G"} |
| 8999 |
| 50 |
| 8499 |
字段名 | 值 |
| 2 |
| 1 |
| IPXS256GOLD |
| {"颜色": "金色", "存储": "256G"} |
| 10999 |
| 30 |
| 10499 |
结合业务理解:SPU 和 SKU 的实际应用
(1) SPU 用于展示商品的通用信息
- 在前端,SPU(
pms_product
)会作为商品的核心展示单位。例如:
-
- 列表页显示商品名称(
name
)、主图(pic
)、基础价格(price
)。 - 商品详情页显示通用描述(
description
)和品牌信息(brand_id
)。
- 列表页显示商品名称(
- 用户可以在商品详情页选择具体的 SKU。
(2) SKU 用于具体规格的库存和价格管理
- 用户在商品详情页选择具体规格后,系统会查询
pms_sku_stock
表:
-
- 返回对应 SKU 的库存(
stock
)。 - 返回 SKU 的具体价格(
price
或promotion_price
)。
- 返回对应 SKU 的库存(
- 下单时,系统扣减 SKU 的库存,而不是扣减 SPU 的库存。
(3) 促销和物流管理
- 促销: SKU 可以有独立的促销价格(
promotion_price
),即同一商品不同规格的促销力度可能不同。 - 物流: SPU 中的
weight
字段用于物流费用计算,但具体运费可能因 SKU(如包装差异)而调整。