【发布时间】:2017-09-17 17:41:15
【问题描述】:
在 MySQL 中,下面的语句有意义吗?
CREATE TABLE `sku_classification` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`sku` int(10) unsigned NOT NULL,
`business_classification_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `IDX_SKU_BUSINESS_CLASSIFICATION` (`sku`,`business_classification_id`),
UNIQUE KEY `sku` (`sku`)
)
在字段组合 (sku,business_classification_id) 上添加唯一键是否不必要的矫枉过正,其中一个字段 (sku) 已经具有唯一索引?或者不是,这种重复的唯一索引确实是有原因的?
【问题讨论】:
-
一开始你为什么要这样做?
-
@juergen-d 遗留代码。正在考虑是否应该删除它。
-
第一个唯一键本身将允许多个具有不同分类的相同 sku。第二个将阻止具有相同 sku 的多行,因此它使第一个无关紧要。真正的问题是真正需要什么。是否可以拥有具有不同分类的相同 sku,或者只能有一个具有特定 sku 的行。 IOW,期望的业务逻辑是什么?
-
@SloanThrasher sku 应该是唯一的。所以我猜复合键没有任何区别,应该被删除。
-
是的。它永远不会发挥作用,因为一个 sku 只允许一行。
标签: mysql schema unique-constraint unique-key unique-index