首页 > 解决方案 > 基于关联列值的唯一约束

问题描述

我有以下(简化的)数据结构:

Property                    Product
-----------   n <----> 1    -------
product_id                  manufacturer
type                        name
value                    

产品表可能如下所示

| name         |
|--------------|
| iPad 2       |
| iPhone 6     |

并且相关的属性可能是

| product_id | type        | value |
|----------------------------------|
|      1     | RAM         | 16GB  |
|      1     | CPU         | A11   |
|      1     | Screen Size | 10"   |
|      2     | Cellular    | yes   |
|      2     | Screen Size | 5.5"  |

是否有可能在 MySQL 中创建一个约束,以便每个产品最多可以有每个属性类型一次(例如,一个产品不能有多个关联的屏幕尺寸。据我所知 MySQL 文档,只有约束处理一种关系,而不是跨关系。

标签: mysqlunique-constraint

解决方案


发布此问题后,我立即意识到了解决方案。约束可以放在属性关系上,这样每对product_id,type只能存在一次。


推荐阅读