电商数据库设计:产品属性集应存为数组列还是采用分表方案?
电商数据库设计方案选择问题
现有数据库表结构
产品表(products)
| Id | 产品名称 |
|---|---|
| 1 | 牛仔衬衫 |
| 2 | 派 |
产品变体选项表
| id | product_id | 名称 |
|---|---|---|
| 1 | 1 | 颜色 |
| 2 | 2 | 口味 |
需存储的产品默认属性集
- 牛仔衬衫:生产日期、面料、图案设计、风格、产地、适用季节(秋季、夏季、春季、冬季)
- 派:适用年龄、配料、食品类型、口味、生产日期、保质期
注:这些属性均为产品默认属性,管理员无法对其进行CRUD操作。
两种设计方案
方案1:将属性集作为数组类型列存储
修改后的产品表结构如下:
| Id | 产品名称 | attr_set |
|---|---|---|
| 1 | 牛仔衬衫 | [生产日期, 面料, ...] |
| 2 | 派 | [适用年龄, 配料, 食品类型, ...] |
方案2:拆分至独立表,与products表建立1-N关联
新增产品属性表,结构如下:
| Id | product_id | attr_name |
|---|---|---|
| 1 | 1 | 生产日期 |
| 2 | 1 | 面料 |
| .. | ... | ... |
| 11 | 2 | 适用年龄 |
| 12 | 2 | 配料 |
提问
在电商数据库设计场景中,哪种方案更为合理?
内容的提问来源于stack exchange,提问作者user01521879
相关产品推荐
相关产品推荐

