**候補キー(Candidate Key)**は、リレーショナルデータベース(RDB)で重要な概念であり、テーブル内の各レコードを一意に識別するためのキー候補となる項目の組み合わせを指します。
この記事では、候補キーの定義、特性、実際の使用例、そして候補キーが主キーとして選ばれる過程について詳しく解説します。
データベース設計における理解を深め、効率的なテーブル設計に役立てましょう。
内容:
1. 候補キーとは?
候補キーとは、リレーショナルデータベースのテーブル内で、各レコードを一意に識別することができる列(カラム)の組み合わせを指します。
候補キーの特長は、以下の通りです。
- 一意性:候補キーの値がテーブル内のどのレコードにも重複せず、各レコードを一意に識別できることが保証されます。
- 最小性:候補キーは最小限のカラムから構成される必要があり、冗長なカラムは含まれません。この性質を「既約性」と呼びます。
候補キーは必ず一つだけ存在するわけではなく、複数の候補キーが存在することがあります。
その中から一つが選ばれて「主キー(Primary Key)」となり、データベース設計の中で重要な役割を担います。
2. 候補キーの種類と特徴
候補キーには、単一のカラムからなるものと、複数のカラムの組み合わせからなるものがあります。
それぞれについて詳しく見ていきましょう。
2.1 単一カラムの候補キー
単一カラムの候補キーは、データベースのテーブル内でそのカラムの値が一意であることが保証されている場合です。
例えば、社員IDや製品コードなど、各レコードが異なる識別子を持っている場合、このカラムは単体で候補キーとして機能します。
例:
- 社員ID:社員テーブルにおいて、各社員には一意の社員IDが割り当てられており、社員IDが重複することはありません。このため、社員IDは単一カラムの候補キーとなります。
2.2 複合カラムの候補キー
複数のカラムの組み合わせが一意にレコードを識別できる場合、それらのカラムの組み合わせを候補キーとして扱うことができます。
これを「複合キー」と呼びます。
例:
- 支店名と課名の組み合わせ:支店名と課名の組み合わせは、同じ支店内でも異なる課が存在する場合、一意にレコードを識別できます。しかし、支店名や課名だけでは一意性が保証されないため、両者の組み合わせが必要となります。
2.3 既約性(Minimality)
複合キーにおいて、「いずれかのカラムが欠けると一意性が保たれない」という条件を満たすカラムの組み合わせだけが候補キーとして認められます。
これを「既約性」と言います。
例:
支店名と課名の組み合わせが一意である場合に、「課長名」を追加しても一意性が保たれることがありますが、この場合「課長名」を候補キーに加えることはできません。
なぜなら、「支店名」と「課名」だけで一意性が保たれるため、「課長名」を含めても冗長であるからです。
3. 主キーと代替キー
候補キーの中から一つが選ばれ、**主キー(Primary Key)として設定されます。
主キーは、テーブル内の各レコードを一意に識別するための最も重要なキーです。
一方、主キーとして選ばれなかった候補キーは代替キー(Alternate Key)**と呼ばれます。
代替キーは、主キーを補完する役割を持ち、データベース設計においては重要な参照情報として利用されます。
3.1 主キーの特性
- 主キーには、NULL(値なし)は許容されません。
- 主キーは必ず一意でなければならず、重複することはできません。
3.2 代替キーの役割
代替キーは、主キーの補完的な役割を果たしますが、実際にレコード識別に使用されることはありません。
ただし、代替キーはデータベース内で追加の一意性制約を持たせることができるため、他のテーブルとリレーションを構築する際に重要です。
4. 候補キーの設計と考慮すべき点
候補キーを設計する際には、いくつかの重要な点を考慮する必要があります。
4.1 一意性の確認
候補キーは、テーブル内で一意にレコードを識別できる必要があります。
そのため、候補キーに選ばれるカラムの値は重複しないことが必須です。
4.2 最小性の確認
複合キーを使用する場合、冗長なカラムを含まないように注意し、最小限のカラムで一意性を確保できるように設計します。
4.3 NULLの扱い
NULL(値なし)は主キーには許容されませんが、候補キーにおいてNULLを許可するかどうかは設計者の判断に委ねられます。
ただし、NULLを含む候補キーは、主キーとして選ばれないことが一般的です。
まとめ:
**候補キー(Candidate Key)**は、リレーショナルデータベースにおいて各レコードを一意に識別するために必要なカラムの組み合わせです。
単一カラムの候補キーや複合カラムの候補キーがあり、その中から一つが主キーとして選ばれます。
データベース設計において、候補キーを適切に選定することは、一貫性のあるデータベース構造を構築するための重要なステップです。
また、代替キーとして他の候補キーを保持することも、柔軟でスケーラブルなデータベース設計に役立ちます。