戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

応用情報技術者 2023年 秋期 午前227


問題文

関係モデルにおける外部キーの説明として、適切なものはどれか。

選択肢

ある関係の候補キーを参照する属性、又は属性の組(正解)
主キー以外で、タプルを一意に識別できる属性、又は属性の組
タプルを一意に識別できる属性、又は属性の組の集合のうち極小のもの
タプルを一意に識別できる属性、又は属性の組を含む集合

🔒 解説は解答すると表示されます

外部キーの定義【午前2解説】

正解の理由

選択肢は「ある関係の候補キーを参照する属性、又は属性の組」と述べており、外部キー(foreign key)の本質を正しく表しています。関係モデルにおける外部キーとは、一方の関係(テーブル)の属性が、他方の関係における候補キー(通常は主キーや一意制約のある属性)を参照して、参照整合性を保つための仕組みです。重要な点は、外部キー自身が参照先の候補キーを指すものであり、外部キーの側で一意性が保証される必要はないことです。したがって「候補キーを参照する属性」であるが正解となります。

解法ステップ

  1. 用語の整理:スーパーキー、候補キー、主キー、外部キーの定義を短く確認する。
    • スーパーキー:属性の集合でタプルを一意に識別できるもの(非最小でも可)。
    • 候補キー:スーパーキーのうち極小(不要な属性がない)なもの。
    • 主キー:候補キーの中から代表に選んだもの(実装上は主に用いられる)。
    • 外部キー:ある関係の属性が、別の関係の候補キーを参照するための属性。
  2. 選択肢を定義と照合する:
    • 外部キーは「参照する」ことが本質なので「参照する属性」と明示している選択肢を探す。
    • 「一意に識別できる属性」とだけ書かれた選択肢は、外部キーの説明として不十分/誤りである可能性が高い。
  3. 結論:参照対象が「候補キー」であると明示している選択肢を採る()。

選択肢別の誤答解説

  • :正しい。外部キーは他の関係の候補キー(多くは主キー)を参照する属性または属性の組であり、参照整合性を確保するために使われる。外部キー側で一意性が要求されるわけではない点に注意。
  • イ:誤り。記述は「主キー以外で、一意に識別できる属性、又は属性の組」となっているが、これは候補キー(あるいは候補キーに該当する属性)に関する説明に近いものの、外部キーの定義とは無関係である。また「主キー以外で」と限定するのは誤りで、候補キーには主キーが含まれる(主キーは候補キーの一つとして選ばれたもの)ため、表現が不適切。さらに外部キーは自分のリレーション内で一意である必要はないため、この選択肢は外部キーの説明にならない。
  • ウ:誤り。これは「タプルを一意に識別できる属性、又は属性の組の集合のうち極小のもの」とあり、候補キー(=極小なスーパーキー)の定義に相当する。外部キーではなく候補キー(または主キー)の説明である。
  • エ:誤り。「タプルを一意に識別できる属性、又は属性の組を含む集合」はスーパーキーやスーパーキーの超集合を指す表現に近い。外部キーは“参照する”側の属性であり、参照先が候補キーである点が欠けているため不適切である。

よくある誤解

  • 外部キーは自分のテーブル内で一意でなければならない、という誤解。実際には外部キーは参照先の候補キーの値を参照する役割であり、外部キー側の値が重複していても構わない(業務上の要件次第では一意にすることもあるが、定義上の必須条件ではない)。
  • 主キーと候補キーの混同。候補キーは「一意に識別でき、極小である属性集合」で、主キーはその候補キーの一つを選んだもの。主キー以外にも候補キーは存在しうる。
  • 外部キーは必ず主キーだけを参照する、という誤解。実際には参照先は候補キー(実装上は主キーや一意制約のある属性)であればよく、必ずしも“主キー”に限定されない(ただし実務では主キー参照が一般的)。

補足コラム

参照整合性(referential integrity)は、外部キー制約によって実現されます。SQLでは以下のように定義します(参照先は通常主キーだが、ユニーク制約のある列も参照可能です)。
CREATE TABLE parent (
  id INT PRIMARY KEY,
  name VARCHAR(100)
);

CREATE TABLE child (
  id INT PRIMARY KEY,
  parent_id INT,
  FOREIGN KEY (parent_id) REFERENCES parent(id)
);
上記では child.parent_id が parent.id を参照する外部キーです。参照先の parent.id は候補キー(ここでは主キー)であり、child 側は複数のタプルで同じ parent_id を持つことができます(多対一の関係)。
また、外部キー制約には削除・更新時の動作を指定できます(CASCADE、SET NULL、RESTRICT など)。業務要件に応じて適切に設定することが重要です。

FAQ

Q: 外部キーは参照先の主キーでなければならないですか?
A: 必須ではありません。参照先は候補キー(唯一性が保証される属性)であればよく、主キーが使われることが多いだけです。
Q: 外部キー列にNULLを許すことはできますか?
A: できます。NULLは「未設定」を示すため、参照先が存在しないことを許す設計であれば許容されます。ただし業務要件に注意してください。
Q: 外部キーと一意制約(UNIQUE)の違いは何ですか?
A: 外部キーは参照関係を示す制約であり、参照先の候補キーとの整合性を保ちます。UNIQUEはその列(または列組)が同一テーブル内で重複しないことを保証する制約です。外部キー自身にUNIQUEを付けると一対一の関係になります。

関連キーワード: 関係モデル、外部キー、参照整合性、候補キー、主キー、スーパーキー、外部キー制約
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

応用情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について