gpt4 book ai didi

mysql - 唯一键与候选键/ super 键 (MySQL)

转载 作者:行者123 更新时间:2023-11-29 03:09:26 25 4
gpt4 key购买 nike

以下 SQL 代码创建两个表,(A) __tableA__,(B) __tableB__。两个表都恰好包含 2 个唯一键,名为 k1k2

SHOW VARIABLES WHERE Variable_name = 'version';    # 5.0.51b

CREATE TABLE __tableA__ (`a` INT, `b` INT,
UNIQUE KEY `k1`(`a`),
UNIQUE KEY `k2`(`a`,`b`)
); # Key_name Column_name
# -------------------------
SHOW KEYS FROM __tableA__; # k1 a
# k2 a
# k2 b
CREATE TABLE __tableB__ (`a` INT,
UNIQUE KEY `k1`(`a`),
UNIQUE KEY `k2`(`a`)
); # Key_name Column_name
# -------------------------
SHOW KEYS FROM __tableB__; # k1 a
# k2 a

DROP TABLE __tableA__; # cleanup
DROP TABLE __tableB__; #

SHOW KEYS 命令所示,键 k1k2 的属性集(列)是

  • A:分别为{a}{a,b}
  • B:分别为 {a}{a}

这表明,在 MySQL 中,unique key 的概念不对应于 candidate key/superkey 的任何一个概念:在情况 (A) 中,k1k2 不能成为候选键,因为 {a} ⊂ {a,b}(因此属性集k2 不是最小值)。在情况 (B) 中,k1k2 不能是 super 键,因为它们是具有相同属性集的不同键。

我的问题:这个结论正确吗?如果是这样,哪个权威来源明确说明?

最佳答案

你是对的。在 SQL 中,唯一性约束中定义的列集不一定是键(最小超键),如果这些列的某些适当子集也具有唯一性约束,则肯定不是。

与标准 SQL 不同,MySQL 语法的一个特点是它使用“KEY”作为“INDEX”的同义词,这似乎表明 MySQL 的作者不知道或不关心什么是键!

关于mysql - 唯一键与候选键/ super 键 (MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10626009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com