关于 SPU、SKU 和多对一关系的解释
1. SPU(Standard Product Unit)
SPU 是 标准化产品单元,指的是一个标准化的产品模型或模板。它定义了产品的基本属性,但不涉及具体的库存或销售信息。
特点:
- 描述产品的通用信息:例如名称、品牌、分类、规格等。
- 不涉及具体库存:SPU 是一个抽象的概念,不包含库存数量或价格。
- 用于商品管理:帮助商家统一管理同一类商品。
示例:
- 一款手机的 SPU 可能是 “iPhone 14”,它定义了手机的品牌、型号、颜色、存储容量等通用属性。
2. SKU(Stock Keeping Unit)
SKU 是 库存保有单位,指的是具体的库存商品。它是商品的最小库存单位,用于管理具体的库存和销售。
特点:
- 描述具体的商品实例:例如某款手机的具体颜色、存储容量等。
- 涉及库存和价格:每个 SKU 都有独立的库存数量和价格。
- 用于库存管理:帮助商家跟踪和管理具体的库存。
示例:
- 基于 “iPhone 14” 这个 SPU,可以生成多个 SKU,例如:
- “iPhone 14 黑色 128GB”
- “iPhone 14 白色 256GB”
3. SPU 和 SKU 的关系
- 一对多关系:一个 SPU 可以对应多个 SKU。
- 抽象与具体:SPU 是抽象的产品模型,SKU 是具体的商品实例。
示例:
- SPU:iPhone 14
- SKU:
- iPhone 14 黑色 128GB
- iPhone 14 白色 256GB
- iPhone 14 蓝色 512GB
4. 多的一端持有 1 的一端的外键
在数据库设计中,SPU 和 SKU 的关系可以通过 外键 来实现。具体来说:
- SPU 表:存储产品的通用信息。
- SKU 表:存储具体的库存信息,并通过外键关联到 SPU 表。
数据库表设计示例:
SPU 表(spu_table)
字段名 | 类型 | 描述 |
---|---|---|
spu_id | BIGINT | SPU 的唯一标识 |
product_name | VARCHAR(50) | 产品名称 |
brand | VARCHAR(50) | 品牌 |
category | VARCHAR(50) | 分类 |
SKU 表(sku_table)
字段名 | 类型 | 描述 |
---|---|---|
sku_id | BIGINT | SKU 的唯一标识 |
spu_id | BIGINT | 关联的 SPU ID |
color | VARCHAR(20) | 颜色 |
storage | VARCHAR(20) | 存储容量 |
price | DECIMAL(10,2) | 价格 |
stock | INT | 库存数量 |
关系说明:
- SKU 表 中的
spu_id
是外键,指向 SPU 表 的spu_id
。 - 一个 SPU 可以对应多个 SKU,因此 SKU 表 是 “多的一端”,SPU 表 是 “1 的一端”。
SQL 示例:
-- 创建 SPU 表
CREATE TABLE spu_table (
spu_id BIGINT PRIMARY KEY,
product_name VARCHAR(50),
brand VARCHAR(50),
category VARCHAR(50)
);
-- 创建 SKU 表
CREATE TABLE sku_table (
sku_id BIGINT PRIMARY KEY,
spu_id BIGINT,
color VARCHAR(20),
storage VARCHAR(20),
price DECIMAL(10,2),
stock INT,
FOREIGN KEY (spu_id) REFERENCES spu_table(spu_id)
);
5. 总结
- SPU 是标准化产品单元,描述产品的通用信息。
- SKU 是库存保有单位,描述具体的商品实例。
- 一个 SPU 可以对应多个 SKU,通过外键实现关联。
- 在数据库设计中,SKU 表 是 “多的一端”,持有 SPU 表 的外键。
通过 SPU 和 SKU 的设计,可以有效地管理商品的通用信息和具体库存信息,适用于电商、零售等场景。