候補キー

候補キーとは



候補キーは、関係データベース関係モデルにおいて、テーブル(関係)内の各行を一意に識別するために用いられる、最小限の属性または属性の集合です。スーパーキーの中から、冗長な属性を取り除いた、既約(これ以上属性を減らせない)なものを指します。つまり、候補キーを構成する属性のいずれか一つでも欠けると、行の一意性を保証できなくなる状態です。この性質から、候補キーは「極小」であるとも言えます。

候補キーの役割



候補キーは、テーブル内の各行を特定するための「アドレス」または「識別子」として機能します。テーブル内のデータにアクセスする際、どの行を操作・参照するかを正確に特定するために不可欠な概念です。また、候補キーは、その名の通り、主キーの候補となるキーでもあります。テーブルには、少なくとも一つ以上の候補キーが存在し、複数の候補キーを持つテーブルも存在します。

具体例



例えば、「市町村」テーブルに「市町村ID」、「市町村名」、「都道府県名」という属性があるとします。

  • - 市町村ID: 各市町村に一意に割り当てられたIDは、単独で候補キーとなります。
  • - {市町村名, 都道府県名}: 市町村名は、全国に同名のものが存在する可能性があるため、単独では候補キーにはなれません。しかし、都道府県名と組み合わせることで、一意に市町村を特定できるため、候補キーとなります。

NULL値の扱いについて



候補キーにNULL値を許容するかについては、様々な意見があります。

  • - 許容派: 主キーにはNULL値が許容されない一方で、候補キーには許容されるという考え方があります。
  • - 非許容派: 主キーと同様に候補キーにもNULL値を許容すべきではない、とする考え方です。

候補キーのうち任意の一つを主キーと定義する立場からは、主キーにNULL値を許容しないとすれば、候補キーにもNULL値を許容すべきではない、と考えるのが自然でしょう。

一意性制約との違い



SQLでテーブルを作成する際に設定する一意性制約(`CREATE UNIQUE INDEX`文)は、候補キーと似た概念ですが、厳密には異なります。一意性制約は、NULL値を許容する場合があります。この点が、候補キーとの大きな違いです。SQLにおける一意性制約の取り扱いが、候補キーの議論に直接的な影響を与えるわけではありません。

まとめ



候補キーは、関係データベースにおいて、行を一意に識別するための重要な役割を担います。冗長性を排除し、最小限の属性で一意性を実現するという性質から、主キー選定の基礎となる概念です。NULL値の扱いに関しては議論があるものの、候補キーの理解は、適切なデータベース設計を行う上で欠かせません。

関連項目



もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。