次の SQL コードは、2 つのテーブル (A) __tableA__、 (B)を作成し__tableB__ます。両方のテーブルには、 と という名前の 2 つの一意のキーが含まれk1ていk2ます。
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 では、一意のキーの概念は候補キー/スーパーk1キーの概念のいずれにも対応しないという結論を示唆していk2ます。 )。ケース (B) の場合、andはスーパーキーにはなりません。これは、同一の属性セットを持つ異なるキーであるためです。{a} ⊂ {a,b}k2k1k2
私の質問: この結論は正しいですか? もしそうなら、どの信頼できる情報源がそれを明確に述べていますか?