主キーとは?データベースの基本を初心者向けにやさしく解説
生徒
「先生、データベースでよく出てくる主キーって何ですか?」
先生
「いい質問ですね。主キーは、テーブルの中で各行を一意に識別するための特別なキーのことです。」
生徒
「一意っていうのは、他と同じじゃないってことですか?」
先生
「その通りです。例えば、学生名簿に『学籍番号』があれば、同じ番号は存在しないので一人一人を区別できます。これが主キーの役割なんです。」
生徒
「なるほど!じゃあ名前を主キーにしてもいいんですか?」
先生
「名前は同じ人がいる可能性がありますよね。だから主キーには向きません。必ず重複しない値を選ぶ必要があるんです。」
1. 主キー(シュキー)とは?
主キー(シュキー)は、データベースのテーブルで行を一意に識別するために使われる列のことです。英語では「Primary Key(プライマリーキー)」と呼びます。テーブルには必ず一つだけ主キーを設定することができ、これによってデータの重複や曖昧さを防ぎます。
例えば、社員テーブルに「社員番号」を主キーとして設定すると、同じ番号を持つ社員は存在しないため、確実に特定できます。主キーはデータベースの基礎であり、正しく理解することが重要です。
2. 主キーの特徴
- 一意性:主キーの値はすべての行で異なる必要があります。
- 非NULL:主キーの値は必ず存在し、空(NULL)にできません。
- テーブルごとに一つだけ設定できる。
このルールがあることで、データの整合性が守られます。例えば、同じ社員番号が二人に割り当てられると、誰が誰なのか分からなくなってしまいます。だからこそ、主キーには厳格な制約が必要なのです。
3. 主キーの具体例
主キーとしてよく使われるのは、以下のような列です。
- 学籍番号(学生を一意に識別)
- 社員番号(社員を一意に識別)
- 商品コード(商品を一意に識別)
例えば、商品テーブルに「商品コード」が設定されていれば、同じ商品名でも別のコードで区別できるため、誤ったデータ処理を防ぐことができます。
4. 複合主キー(フクゴウシュキー)
主キーは通常1つの列ですが、複数の列を組み合わせて主キーとすることもできます。これを「複合主キー(フクゴウシュキー)」と呼びます。
例えば、成績テーブルでは「学籍番号」と「科目コード」を組み合わせて主キーにすることで、一人の学生が複数の科目を履修しても、データを正しく管理できます。
5. 主キーと候補キー(コウホキー)の違い
テーブルには主キーの候補となる列が複数存在する場合があります。これを「候補キー(コウホキー)」といいます。その中から一つを選んで主キーに指定します。
例えば、社員テーブルに「社員番号」と「メールアドレス」があれば、どちらも一意なので候補キーになります。その中から実際に使いやすい「社員番号」を主キーに選ぶといった形です。
6. 主キーと外部キー(ガイブキー)の関係
主キーは他のテーブルと結びつくときにも大切な役割を果たします。他のテーブルで参照されると「外部キー(ガイブキー)」になります。外部キーは、参照先の主キーと一致することで、テーブル同士をつなげることができます。
例えば、受注テーブルに「商品コード」を外部キーとして設定すれば、商品テーブルの主キーと結びつき、どの注文がどの商品かを正確に管理できます。
7. 主キーの歴史や雑学
主キーの概念は、リレーショナルデータベース(RDB:アールディービー)の誕生とともに導入されました。1970年代にエドガー・F・コッドという人物が提唱したリレーショナルモデルが基礎となっています。それ以来、世界中のデータベースで共通して使われる考え方となり、今日のシステム開発でも欠かせない存在となっています。
8. 主キーの選び方のポイント
主キーを決めるときは以下のポイントに注意します。
- 重複しない値を持つ列を選ぶこと
- 変更されにくい列を選ぶこと
- できるだけ短くシンプルな列を選ぶこと
例えば、住所や電話番号は変更される可能性があるので主キーには不向きです。一方で社員番号や学籍番号のように、基本的に変わらない値は主キーに適しています。