主キー
リレーショナルデータベース(RDB)の表(テーブル)で、各行(レコード)を他と重複しない形で特定するために設定する列、または列の組合せです。
主キーとは
主キー(プライマリキー)とは、リレーショナルデータベースのテーブルにおいて、各レコード(行)を一意に識別するための項目です。
主キーを設定すると、データの中から特定の1行を確実に特定できます。
主キーの条件
主キーには次の条件が必要です。
| 条件 | 内容 |
|---|---|
| 一意性 | 同じ値が複数の行に存在しないことです。 |
| 非NULL | 値が空(Null)にならないことです。 |
主キーの値が同じ行は存在できないため、主キーの値を指定すると対象の行を1行に特定できます。
主キーの具体例
社員テーブルの例です。
| 社員番号 | 氏名 | 部署 |
|---|---|---|
| 001 | 田中太郎 | 営業部 |
| 002 | 鈴木花子 | 総務部 |
| 003 | 佐藤一郎 | 開発部 |
この場合、社員番号は一意性と非NULLを満たすため主キーとして設定できます。
一方、氏名は同姓同名があり得るため、一意性を満たさず主キーに不向きです。
複合主キーの例
1つの列だけでは一意に特定できない場合、複数の列を組み合わせて主キーにすることがあります。
これを複合主キー(複合キー)と呼びます。
履修テーブルの例です。
| 学生番号 | 科目コード | 成績 |
|---|---|---|
| S001 | M101 | A |
| S001 | M102 | B |
| S002 | M101 | A |
この例では、学生番号だけでは同じ学生の複数行があり一意になりません。
科目コードだけでも同じ科目を複数学生が履修するため一意になりません。
学生番号と科目コードの組み合わせにより、各行を一意に識別できます。
主キーが重要な理由
データの重複登録を防ぐ
主キーの一意性により、同じ主キー値の行を登録できないため、重複登録の防止につながります。
他の表から参照する基準になる
他の表は主キーを参照して、どの行と関連付くかを表します。参照する側の列は外部キーと呼ばれます。
理解のポイント
-
主キーはテーブル内の各行を一意に識別するための列、または複数列の組み合わせです。
-
主キーには一意性と非NULLが必要です。
-
複合主キーは複数列の組み合わせで一意性を満たします。
-
テーブルに設定する主キーは1つです。複合主キーの場合も、主キーは1つで、その構成が複数列になります。
-
主キーはテーブル同士を関連付けるときの参照元として使われます。
発展知識
関連用語
| 用語 | 概要 |
|---|---|
| 外部キー(Foreign Key) | 他のテーブルの主キーを参照し、テーブル間の関連を定義する列です。 |
| 候補キー | 主キーになり得る、一意性と非NULLを満たす列(または列の組み合わせ)の集合です。 |
| 複合主キー | 複数の列を組み合わせて1つの主キーとして設定したものです。 |
| NULL | 値が存在しない、または未設定である状態を表します。 |
| 一意性制約(UNIQUE制約) | 列の重複を禁止する制約です。主キー以外の列にも設定できます。 |
| 正規化 | データの重複や不整合を減らすためにテーブル構造を整理する手法です。 |