电商平台 SPU-SKU 数据模型设计

本设计基于 MySQL,构建一个灵活、可扩展的 SPU-SKU 数据模型,适用于 B2B、B2C 等多种电商平台。

### 1. 核心实体

  • SPU (Standard Product Unit):标准产品单元 代表一类商品的共同特征,例如手机、书籍。
  • SKU (Stock Keeping Unit):库存量单位 代表一件具体的商品,是 SPU 的一个具体实例,例如 iPhone 13 Pro Max 256G 金色。

### 2. 数据表设计

#### 2.1 SPU 表

| 字段名 | 数据类型 | 是否为空 | 说明 |

| :------------- | :-------- | :------- | :---------------------------------------- |

| spu_id | INT | NOT NULL | SPU ID,主键 |

| name | VARCHAR(255) | NOT NULL | SPU 名称 |

| category_id | INT | NOT NULL | 类目 ID |

| brand_id | INT | NOT NULL | 品牌 ID |

| description | TEXT | NULL | SPU 描述 |

| created_at | TIMESTAMP | NOT NULL | 创建时间 |

| updated_at | TIMESTAMP | NOT NULL | 更新时间 |

#### 2.2 SKU 表

| 字段名 | 数据类型 | 是否为空 | 说明 |

| :-------------- | :-------- | :------- | :--------------------------------- |

| sku_id | INT | NOT NULL | SKU ID,主键 |

| spu_id | INT | NOT NULL | SPU ID |

| attribute_ids | VARCHAR(255) | NOT NULL | SKU 属性 ID 列表,多个属性 ID 用逗号分隔 |

| price | DECIMAL(10,2) | NOT NULL | 价格 |

| stock | INT | NOT NULL | 库存 |

| created_at | TIMESTAMP | NOT NULL | 创建时间 |

| updated_at | TIMESTAMP | NOT NULL | 更新时间 |

#### 2.3 属性表

| 字段名 | 数据类型 | 是否为空 | 说明 |

| :---------- | :-------- | :------- | :------------------ |

| attribute_id | INT | NOT NULL | 属性 ID,主键 |

| name | VARCHAR(255) | NOT NULL | 属性名称 |

| values | TEXT | NULL | 属性值列表,多个值用逗号分隔 |

### 3. 关系说明

  • SPU 表与 SKU 表是一对多关系,一个 SPU 可以对应多个 SKU。
  • SKU 表与属性表是多对多关系,一个 SKU 可以拥有多个属性,一个属性也可以属于多个 SKU,通过中间表 sku_attribute 实现关联。

### 4. 扩展性

  • 可以根据实际业务需求添加其他字段,例如 SPU 图片、SKU 规格等。
  • 可以使用数据库视图简化查询操作。

### 5. 注意事项

  • 该数据模型仅供参考,实际设计时需根据具体业务需求进行调整。
  • 建议使用索引优化查询性能。