複合キーとサロゲートキーは、データベース設計の主キー選定にかかわる重要な概念です。この記事では、それぞれの意味と違い、試験での出題ポイントを整理します。
対象試験と出題頻度
複合キー/サロゲートキーは、応用情報技術者で出題されるテーマです。
関係データベースの設計問題として午後試験を中心に登場し、主キーをどう設定するかの判断力が問われます。
詳細をクリックして確認
応用情報技術者
★★☆☆☆
ランクC(応用)余裕があれば覚える
用語の定義
情報処理試験を勉強していると、「複合キーとサロゲートキーって何が違うの?どっちを使えばいいの?」と混乱しがちです。
複合キー(Composite Key)とは、一言で言うと
「複数の列(属性)を組み合わせてレコードを一意に識別する主キー」
のことです。
一方、サロゲートキー(Surrogate Key)とは
「業務データとは無関係に、連番などで人工的に付与した代用の主キー」
のことです。
イメージとしては、「学校の出席番号と座席表」で考えると分かりやすいです。
クラスで生徒を特定するとき、「3年2組の田中太郎」と学年・組・名前の3つを組み合わせて識別するのが複合キーの発想です。
一方、全校共通の出席番号「No.0512」を1つ振って識別するのがサロゲートキーの発想です。
📊 複合キー/サロゲートキーの基本情報
| 項目 | 複合キー | サロゲートキー |
|---|---|---|
| 英語名 | Composite Key | Surrogate Key |
| 別名 | 連結キー、複合主キー | 代用キー、代理キー |
| 値の意味 | 業務上の意味あり(ナチュラルキー) | 業務上の意味なし(連番など) |
| 列の数 | 2列以上 | 1列 |
解説
関係データベースでは、テーブルの各レコードを一意に特定できる「主キー」の設定が必須です。
候補キー(レコードを一意に決定できる最小限の属性の組)が1つの列で収まればシンプルですが、現実のデータ構造では1列だけでは一意にならないケースが頻繁に発生します。
複合キーが必要になる場面
たとえば、受注テーブルの明細行は「受注番号」だけでは一意に特定できません。
1つの受注に複数の商品が含まれるためです。この場合、「受注番号+明細行番号」の2列を組み合わせて初めて1行を特定できます。これが複合キーです。
受注明細テーブル(複合キーの例)
| 🔑 受注番号 | 🔑 明細行番号 | 商品コード | 数量 |
|---|---|---|---|
| A001 | 1 | P100 | 3 |
| A001 | 2 | P200 | 1 |
| A002 | 1 | P100 | 5 |
▲ 🔑 マークの2列を組み合わせて初めて1行を特定できる
サロゲートキーに置き換える理由
複合キーは業務データだけでテーブルを構成できるという利点がある反面、属性数が増えると次の3つの問題が発生します。
⚠ 複合キーの属性が多すぎると起きること
① SQL結合の煩雑化:JOINで結合する列が増え、SQL文が長く複雑になる
② テーブル間の依存度増大:参照先テーブルの列変更が、外部キーを持つすべてのテーブルに波及する
③ 仕様変更への脆弱性:主キーの構成が変わると、関連テーブルの再設計が必要になる
これらを回避するために、連番のような業務に無関係な列を新たに追加し、それを主キーに昇格させる手法がサロゲートキーです。
元の複合キーは主キーの役割から外れ、「オルタネートキー(代替キー)」という位置づけに変わります。
図解:複合キー → サロゲートキーへの置き換え
Before:複合キー
| 🔑 予約日 | 🔑 仲卸コード | 内容 |
|---|---|---|
| 4/20 | N01 | トマト 5箱 |
| 4/20 | N02 | キュウリ 3箱 |
主キー=予約日+仲卸コード(2列)
After:サロゲートキー
| 🔑 予約番号 | 予約日 | 仲卸コード | 内容 |
|---|---|---|---|
| R001 | 4/20 | N01 | トマト 5箱 |
| R002 | 4/20 | N02 | キュウリ 3箱 |
主キー=予約番号(1列)、元の2列はオルタネートキーに
ここだけは確実に押さえてください。サロゲートキーを導入しても、元の複合キーが消えるわけではありません。
元の列はオルタネートキー(alternate key)として残り、一意性制約はそのまま維持されます。
では、この用語が試験でどのように出題されるか見ていきましょう。
💡 複合キー/サロゲートキーの核心を3行で
・複合キーは複数列を組み合わせた主キー。業務データそのもので構成する
・サロゲートキーは連番等の人工的な列で主キーを代用する手法
・置き換え後、元の複合キーはオルタネートキー(代替キー)になる
試験ではこう出る!
複合キーとサロゲートキーは、応用情報技術者では午後のデータベース問題を中心に出題されています。午前問題では直接的な出題は少ないものの、DB設計の文脈で問われることがあります。データベーススペシャリスト試験では定番テーマです。
📊 過去問での出題実績
| 試験回 | 出題内容 | 問われたポイント |
|---|---|---|
| AP H29秋 午後 問6 |
青果卸売業の取引システム改修。予約エンティティで代用キー(サロゲートキー)を使う理由を記述させる問題。 | ・「取りまとめの軸が変更される可能性がある」から複合キーでなくサロゲートキーを採用する判断 ・元の属性はオルタネートキーになること |
| AP R2秋 午前 問27 |
UMLクラス図から関係DBへの実装を問う問題。納入表の主キー設計で複合キーとサロゲートキーの2パターンが解説に登場。 | ・複合キーを候補キーの一部として使えるか ・外部キーの判定 |
| DB R6秋 午前II 問5 |
複合キーの属性数が多すぎるとき、扱いやすくする方法を選ぶ問題。 | ・サロゲートキー(surrogate key)で置き換え、元の複合キーをオルタネートキー(alternate key)にする |
📝 IPA試験での出題パターン
パターン1(午後・記述):「なぜサロゲートキーを採用するのか」
AP H29秋 午後問6のように、E-R図の文脈で「主キーに代用キーを用いる理由を述べよ」と問う形式。「複合キーの構成が将来変わる可能性がある」「結合演算が煩雑になる」のいずれかが解答の軸になる。
パターン2(午前・選択):「サロゲートキー導入後の元キーの扱い」
DB R6秋 午前II 問5のように、サロゲートキー導入後に元の複合キーがどうなるかを問う。ひっかけとして「外部キーになる」という選択肢が出るが、正解は「オルタネートキー(代替キー)になる」。
試験ではここまででOKです。サロゲートキーとオルタネートキーの日本語訳が統一されていない点(代用キー/代理キー/代替キーの混在)は、深追いは不要です。英語名で覚えてしまうのが確実です。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. 関係データベースにおいて、主キーが多くの属性から構成される複合キーであるため扱いにくい場合の対応として、最も適切なものはどれか。
- A. 複合キーを構成する属性のうち、エンティティの性格を最もよく表す1つの属性を主キーとし、残りを外部キーにする。
- B. 複合キーを構成する属性のうち、エンティティの性格を最もよく表す1つの属性を主キーとし、残りをオルタネートキーにする。
- C. 連番などを値としてとる列を新たに設けて主キーとし、元の複合キーをオルタネートキーとする。
正解と解説を見る
正解:C
解説:
サロゲートキー(surrogate key)とは、連番などの業務に無関係な列を新設して主キーにする手法です。導入後、元の複合キーはオルタネートキー(alternate key)として一意性制約を維持したまま主キーの役割から外れます。
選択肢Aは誤りです。複合キーは全属性の組み合わせで一意性を保っているため、1つの属性だけを取り出しても主キーとしては機能しません。また、残りの属性は他テーブルの主キーを参照しているわけではないので外部キーにもなりません。選択肢Bも同じ理由で不適切です。複合キーの一部だけではレコードを一意に特定できないため、主キーとして成立しません。
よくある質問(FAQ)
Q. サロゲートキーを導入すると正規化に影響はありますか?
正規化のレベルには影響しません。サロゲートキーはあくまで主キーの「入れ物」を差し替えるだけであり、属性間の関数従属関係自体は変わりません。ただし、元の複合キーにUNIQUE制約を付けておかないと、同じ業務データの重複登録を許してしまう点には注意が必要です。
Q. ナチュラルキーとは何ですか?複合キーとの関係は?
ナチュラルキー(自然キー)とは、業務上の意味を持つ既存の属性で構成された主キーのことです。メールアドレスや社員番号などが該当します。複合キーは、ナチュラルキーが1列では一意にならない場合に複数の属性を組み合わせた形です。つまり「ナチュラルキーかつ複合キー」という状態は普通に存在します。サロゲートキーはナチュラルキーの対義語にあたります。
Q. 実務ではどちらが多く使われていますか?
Webアプリケーション開発の現場では、サロゲートキー(連番のID列)を採用するケースが圧倒的に多いです。Ruby on RailsやDjangoなどの主要なORMフレームワークが、サロゲートキーを前提とした設計になっていることが理由の一つです。一方、データウェアハウスやバッチ処理の現場では、業務データの組み合わせで一意性を保証する複合キーが今でも活用されています。
Q. IPA試験で「代用キー」「代理キー」「代替キー」が混在して出ることはありますか?
あります。IPAの過去問では、サロゲートキーを「代用キー」と表記する回もあれば「代理キー」と表記する回もあります。DB H22春 午前II 問4ではサロゲートキー=代用キー、オルタネートキー=代理キーでしたが、DB R6秋 午前II 問5ではサロゲートキー=代理キーとなっていました。英語名(surrogate key / alternate key)で覚えるのが混乱を防ぐ最善策です。