初めに
関係データベースにおいて、主キーは、テーブル設計やデータ抽出する際に最も重要視されるでしょう。
しかし、主キーの意味を正しく把握しているでしょうか?
もし、主キーを、「テーブル内のデータを一意に識別するカラムの組」と認識してる場合、それは正確ではありません。
データ抽出の際は、上記の認識でも特に問題無いケースがほとんどだと思いますが、テーブル設計をする際は、上記の認識だと誤解をチームメンバに与えかねません。
主キーを正しく理解いただくために、関連用語も合わせて説明します。
概要
主キーを説明するにあたり、前提として下記の制約・キーを説明します。
それを踏まえて、最後に主キーを説明します。
【制約】
- 一意制約
- 非ナル制約
【キー】
- スーパーキー
- 候補キー
各制約・キーの説明
制約
制約とは「特定カラムについて、テーブルとして守るべきルール」です。
データベースシステムでは、(下記で説明する制約含め)色々な制約をテーブルに与えることができ、それにより、制約に合わないテーブル操作をした時にエラーを発生させ、テーブルの整合性を自動的に維持してくれます。
主キーに関連する制約は下記2つです。
一意制約
一意制約は、カラム(1つ又は複数)に対して制約するものであり、「テーブル内における対象カラムの値(の組)が一意である」制約です。
非ナル制約
非ナル制約は、1つのカラムに対して制約するものであり、「Null値を持たない」制約です。
キー
上記制約を前提として説明します。
スーパーキー
スーパーキーは、「一意制約が成り立つカラム(の組)」です。
候補キー
候補キーは、「一意制約と非ナル制約が成り立つカラム(の組)のうち、極小になるもの」です。
ここでの極小は「その中でカラムが一つでも欠けると一意制約が成立しない」事を指します。
候補キーは「主キーの”候補”となる”キー”」です。
又、定義の通り、候補キーはスーパーキーでもあります。
主キー
主キーは「候補キーのうち、最も相応しいもの1つ」です。
「相応しい」とは、「テーブルの位置付けや運用保守などを踏まえ、主観的に最も適切なものを選ぶ」という意味です。
なので、主キーを正しく理解する上で、下記が主キーのポイントになります。
- 一意制約が成り立つ。
- 非ナル制約が成り立つ。
- 一つでもカラムが欠けると一意制約を失う。
- 主キーに指定できるものは必ずしも一つではない。(候補キー全てが主キーに指定可能)