令和8年度 ITパスポート試験 公開問題 問57 解説 外部キーの定義
関係データベースで管理している“学生”表,“科目”表,“成績”表がある。1人の学生は複数の科目を履修するものとし,“学生”表に登録されていない学生や,“科目”表に登録されていない科目は“成績”表に登録できないものとするとき,外部キーとして設定するのが適切なものはどれか。ここで,表中の下線は主キーを表す。
- “学生”表の学生番号,“成績”表の学生番号
- “学生”表の学生名,“科目”表の科目名
- “成績”表の学生番号と科目コード ✓ 正答
- “成績”表の成績
解説
この問題を解くためのポイントは、外部キーの定義である「他の表の主キーを指し示す列」を見つけることです。成績表には学生情報と科目情報が組み合わさっているため、成績表の中にある学生番号が学生表の主キーを、科目コードが科目表の主キーをそれぞれ参照する構造になっている点に注目しましょう。
外部キーとは何か
データベース設計において、外部キー(Foreign Key)は、テーブル間の関連付けを行うために非常に重要な仕組みです。あるテーブルの列が、別のテーブルの主キーとリンクすることで、データの整合性を維持する役割を果たします。
今回の例で言えば、成績表には「どの学生が」「どの科目を」受けたのかという情報が必要です。このとき、学生表に存在しない学生番号が成績表に登録されてしまうと、成績の管理ができなくなります。これを防ぐために、成績表の学生番号を学生表の主キーである学生番号と結びつけ、「学生表に存在する番号しか成績表には登録できない」というルールを課すのが外部キーの役割です。
なぜこれが重要なのか
システム開発の現場では、この外部キー設定(参照整合性制約)が極めて重要です。例えば、誤ってまだ存在しない学生の成績を登録しようとしたり、科目コードを打ち間違えたりした際に、データベース側でエラーを返し、不正なデータが入ることを未然に防ぐことができます。
もし外部キーを設定していないと、架空の学生の成績データが紛れ込んだり、削除されたはずの学生の成績だけがデータベースに残ってしまったりと、情報の正確性が損なわれる原因になります。ITパスポート試験では、このような「データの整合性を保つための仕組み」を理解しているかが問われます。
データのつながりを確認する
本問の構造を整理すると以下のようになります。
- 学生表:学生番号が主キー
- 科目表:科目コードが主キー
- 成績表:学生番号と科目コードの組み合わせで誰がどの科目の成績を取ったかを管理
成績表にある学生番号は学生表の学生番号を参照し、成績表にある科目コードは科目表の科目コードを参照しています。したがって、成績表における学生番号と科目コードこそが外部キーとして機能していると判断できます。