主キーと候補キーの主な違いは、主キーが各行を一意に識別するのに役立つテーブルの最小限の属性セットであるのに対し、候補キーは冗長な属性を持たないスーパーキーであることである。
一般に、RDBMSのデータベースは複数のテーブルから構成されている。
そのため、キーはテーブル間の関係性を確立するのに役立つ。
また、キーは1つの属性で構成されることもあれば、複数の属性の組み合わせで構成されることもあります。
全体として、さまざまなキーが存在し、これらのキーはテーブル内の任意のデータ行を識別するのに役立つ。
そのうちの2つが主キーと候補キーです。
主キーとは
主キーとは、キーの候補のことである。
テーブルの主要なキーと見なされます。
テーブルの各行やレコードを一意に識別するのに役立ちます。
たとえば、学生テーブルを想定してみましょう。
これは、id、name、age、phoneと呼ばれる4つのプロパティを持っています。
しかし、同じ名前の学生が存在する可能性があるため、名前を主キーと見なすことはできません。
同様に、年齢も同じ年齢の生徒が複数いる可能性があるため、主キーとして選択することは得策ではありません。
しかし、各生徒はユニークなIDを持っているので、idを主キーとすることは可能です。
同様に、id だけを使って各行を識別することができます。
したがって、これをテーブルの主キーとします。
Candidate Keyとは
スーパーキーとは、テーブル内のレコードを一意に識別できる1つまたは複数の属性の集合のことです。
候補キーとは、スーパーキーの集合の中から選ばれたキーのことです。
さらに、候補キーは冗長な属性を持ってはならない。
さらに、候補キーはいくつかの特性を持つ。
第1に、候補キーは決してヌルや空であってはならない。
次に、複数のカラム(属性)の組み合わせにすることができる。
最後に、1つのテーブルに対して複数のキー候補が存在することがあります。
そこで、主キーのところで説明したstudentテーブルをもう一度見てみると、idとphoneは冗長な属性を持っていない。
したがって、これらがテーブルstudentのキー候補となります。
プライマリーキーとキャンディデートキーの違い
定義
主キーはテーブルのタプル(行)を一意に識別する最小限の属性(列)の集合であり、候補キーは冗長な属性を持たない上位のキーです。
例
例えば、id, name, age, phone を持つ student テーブルでは、id が主キーで、id と phone はそのテーブルの候補キーです。
結論
RDBMS では、リレーションシップを持つテーブルがより便利で意味のあるデータを提供する。
このとき、開発者はテーブル間の関係を表すためにキーを使用することができます。
このように、RDBMSにはさまざまなキーが存在する。
そして、キーには主キーと候補キーの2種類があります。
簡単に説明すると、主キーと候補キーの主な違いは、主キーは各行を一意に識別するのに役立つテーブルの最小限の属性セットであり、候補キーは冗長な属性を持たないスーパーキーであるということである。