主キー(Primary Key)とは、データベースのテーブルにおいて、1件1件のデータ(行)を他と区別するために使われる、重複のない項目のことです。会員番号や社員番号のように、必ず1人に1つだけ割り当てられる値が、その代表例です。
現実世界に例えると、主キーはマイナンバーや運転免許証の番号のようなものです。同姓同名の人がいても、この番号さえ確認すれば、確実に本人だけを特定できます。
主キー(Primary Key)図解
主キーの役割
テーブルの中には、氏名や生年月日など、他の人と同じ値になり得る項目がたくさんあります。主キーは、こうした重複しうる項目とは違い、必ず1つの行だけを指し示せる「目印」の役割を果たします。この目印があることで、特定のデータだけを確実に取り出したり、更新したりできます。
主キーの条件
ある項目を主キーとして使うには、「値が重複しないこと(一意性)」と「値が空になっていないこと(非NULL)」という2つの条件を満たす必要があります。この条件が崩れると、どの行を指しているのか特定できなくなり、主キーとしての役目を果たせなくなってしまいます。
単一キーと複合キー
会員番号のように、1つの項目だけで主キーとする「単一キー」が最もよく使われますが、複数の項目を組み合わせて初めて一意になる「複合キー」が使われることもあります。例えば、座席予約のテーブルでは「便名」と「座席番号」を組み合わせることで、1つの席を特定できるようにするといった使い方です。
主キーの選び方
| 種類 | 内容 |
|---|---|
| 自然キー | メールアドレスなど、業務上すでに意味を持つ値を使う方式 |
| 代理キー | 連番など、システムが自動で割り振る意味を持たない値を使う方式 |
自然キーは分かりやすい反面、後から値が変わる可能性がある項目には向きません。そのため実務では、自動的に採番される代理キーが主キーとしてよく選ばれます。
主キーとインデックスの関係
多くのデータベースでは、主キーを設定すると、その項目に自動的に検索を高速化する「インデックス」が作られます。これにより、大量のデータの中から特定の1件を探し出す処理が、格段に速くなります。
主キーと外部キーの関係
あるテーブルの主キーは、別のテーブルから「外部キー」として参照されることがあります。例えば注文テーブルが顧客テーブルの主キーを参照することで、「この注文は、どの顧客によるものか」という関係を表せます。
主キーを設定しない場合の問題
主キーがないテーブルでは、まったく同じ内容の行が複数存在してしまっても、システム側で区別ができません。特定の1件だけを更新・削除したいときに、意図しない行まで変更してしまう危険があるため、テーブルには基本的に主キーを設定しておくことが推奨されます。
身近な例
ネット通販サイトの「注文番号」も、主キーの身近な例です。同じ商品を同じ日に何度注文しても、注文ごとに異なる番号が割り振られるため、後から問い合わせをする際にも、どの注文について話しているかを迷いなく特定できます。
あわせて知っておきたい用語
- テーブル(TABLE):
主キーが設定される、行と列から成るデータベースの基本単位です。 - 外部キー(Foreign Key):
別の表の主キーを参照し、表同士を関連付けるための項目です。 - 正規化(Normalization):
主キーを軸に、データの重複や矛盾を減らすテーブル設計の手法です。 - RDB(リレーショナルDB):
主キーと外部キーによって、表同士を関連付けて扱うデータベースです。



コメント