初めに

関係データベースにおいて、主キーは、テーブル設計やデータ抽出する際に最も重要視されるでしょう。
しかし、主キーの意味を正しく把握しているでしょうか?
もし、主キーを、「テーブル内のデータを一意に識別するカラムの組」と認識してる場合、それは正確ではありません。
データ抽出の際は、上記の認識でも特に問題無いケースがほとんどだと思いますが、テーブル設計をする際は、上記の認識だと誤解をチームメンバに与えかねません。
主キーを正しく理解いただくために、関連用語も合わせて説明します。

概要

主キーを説明するにあたり、前提として下記の制約・キーを説明します。
それを踏まえて、最後に主キーを説明します。

【制約】

  • 一意制約
  • 非ナル制約

【キー】

  • スーパーキー
  • 候補キー

各制約・キーの説明

制約

制約とは「特定カラムについて、テーブルとして守るべきルール」です。
データベースシステムでは、(下記で説明する制約含め)色々な制約をテーブルに与えることができ、それにより、制約に合わないテーブル操作をした時にエラーを発生させ、テーブルの整合性を自動的に維持してくれます。

主キーに関連する制約は下記2つです。

一意制約

一意制約は、カラム(1つ又は複数)に対して制約するものであり、「テーブル内における対象カラムの値(の組)が一意である」制約です。

非ナル制約

非ナル制約は、1つのカラムに対して制約するものであり、「Null値を持たない」制約です。

キー

上記制約を前提として説明します。

スーパーキー

スーパーキーは、「一意制約が成り立つカラム(の組)」です。

候補キー

候補キーは、「一意制約と非ナル制約が成り立つカラム(の組)のうち、極小になるもの」です。
ここでの極小は「その中でカラムが一つでも欠けると一意制約が成立しない」事を指します。
候補キーは「主キーの”候補”となる”キー”」です。
又、定義の通り、候補キーはスーパーキーでもあります。

主キー

主キーは「候補キーのうち、最も相応しいもの1つ」です。
「相応しい」とは、「テーブルの位置付けや運用保守などを踏まえ、主観的に最も適切なものを選ぶ」という意味です。
なので、主キーを正しく理解する上で、下記が主キーのポイントになります。

  1. 一意制約が成り立つ。
  2. 非ナル制約が成り立つ。
  3. 一つでもカラムが欠けると一意制約を失う。
  4. 主キーに指定できるものは必ずしも一つではない。(候補キー全てが主キーに指定可能)

By clear

データエンジニア・機械学習・分析等を主とし、Webアプリ開発も行っているフリーランスです。