候補キーと複合キーの主な違いは、候補キーが冗長な属性を持たないスーパーキーであるのに対し、複合キーはテーブルの行を識別するための2つ以上の属性を持つキーである点です。
一般に、RDBMSのデータベースは、データを格納するためのテーブルを持つ。
キーはテーブル間の関係を作るのに役立つ。
したがって、キーはさまざまなテーブルに格納されたデータ間の関係を識別するのに役立つ。
キーは1つまたは複数の属性(カラム)で構成される。
キーには、候補キーと複合キーの2種類があります。
Candidate Keyとは
スーパーキーとは、テーブル内のレコードを一意に識別できる1つまたは複数の属性の集合のことです。
候補キーは、スーパーキーの集合から選ばれたキーです。
また、候補キーは冗長な属性を持ってはならない。
一般に、候補キーはヌル値を持たない。
また、1つ以上のカラムや属性から構成されることもあります。
さらに、1つのテーブルは1つ以上のキー候補を持つことができる。
例えば、studentというテーブルがあるとする。
このテーブルには、id、name、phone の3つのカラムがあります。
idとphoneのカラムを考えてみよう。
これらは冗長な属性を持っていない。
したがって、これらはstudentテーブルの候補キーです。
コンポジットキーとは
複合キーとは、テーブル内のレコードを一意に識別するのに役立つ2つ以上の属性を含むキーのことです。
言い換えれば、これらの属性が組み合わさって複合キーが形成されます。
したがって、この組み合わせを使用して、レコードを個別に識別する必要があります。
個々の属性を使ってレコードを識別することはできない。
例えば、学生の点数を保存するテーブルがあるとする。
このテーブルには、student_id、subject_id、marks、exam_nameの4つの属性またはカラムがあります。
このテーブルでは、student_id と subject_id を主キーとしてレコードを一意に識別することができないため、student_id と subject_id のどちらかを主キーとすることはできません。
しかし、student_id と subject_id の組み合わせにより、各レコードを識別することができる。
従って、この組み合わせを主キーとする。
さらに、この組み合わせは複合キーでもあります。
Candidate Key と Composite Key の相違点
定義
候補キーは冗長な属性を持たないスーパーキーであり、複合キーはテーブル内の任意の行を一意に識別する2つ以上の属性から構成されるキーです。
したがって、ここが候補キーと複合キーの大きな違いです。
属性
また、候補鍵は1つの属性を持つことができるが、複合鍵は最低2つの属性を 持たなければならない。
これが候補キーと複合キーの重要な違いです。
例
id、name、phoneの属性を持つテーブルでは、idとphoneが候補キーとなる。
一方、student_id, subject_id, marks, exam_name の属性を持つテーブルでは、student_id と subject_id の組が複合キーとなる。
結論
簡単に説明すると、プログラマはデータベースのテーブルを接続するために、様々なキーを使用することができます。
キーには、候補キーと複合キーの2種類があります。
候補キーと複合キーの主な違いは、候補キーが冗長な属性を持たないスーパーキーであるのに対し、複合キーはテーブルの行を識別するために2つ以上の属性を持つキーであることです。