基于关联列值的唯一约束
Unique constraint based on associated column value
我有以下(简化的)数据结构:
Property Product
----------- n <----> 1 -------
product_id manufacturer
type name
value
产品 table 可能看起来像这样
| 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 文档,约束只适用于一种关系,但不适用于跨关系。
发布这个问题后,我立即想到了解决方案。可以对属性关系进行约束,使得每对product_id
、type
只能存在一次。
我有以下(简化的)数据结构:
Property Product
----------- n <----> 1 -------
product_id manufacturer
type name
value
产品 table 可能看起来像这样
| 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 文档,约束只适用于一种关系,但不适用于跨关系。
发布这个问题后,我立即想到了解决方案。可以对属性关系进行约束,使得每对product_id
、type
只能存在一次。