ITパスポート 令和8年度57

問題

テクノロジ系

問57 関係データベースで管理している "学生" 表,"科目" 表,"成績" 表がある。1人の学生は複数の科目を履修するものとし,"学生" 表に登録されていない学生や,"科目" 表に登録されていない科目は "成績" 表に登録できないものとするとき,外部キーとして設定するのが適切なものはどれか。ここで,表中の下線は主キーを表す。

選択肢

  • "学生" 表の学生番号,"成績" 表の学生番号
  • "学生" 表の学生名,"科目" 表の科目名
  • "成績" 表の学生番号と科目コード
  • "成績" 表の成績

解説

正解:

概要

この問題は,関係データベースにおける外部キーの概念を問うものです。参照整合性の仕組みと外部キーの設定箇所を正しく理解することがポイントです。

正解の理由

外部キーは,参照する側(子表)に設定します。「成績」表の学生番号は「学生」表の主キーを参照し,「成績」表の科目コードは「科目」表の主キーを参照するため,外部キーとして設定するのは「成績」表の学生番号と科目コードであるウが正解です。

各選択肢の解説

ア(×): 「学生」表の学生番号は主キーであり,外部キーではありません。また,「成績」表の学生番号は外部キーですが,「学生」表の学生番号をセットで外部キーとするのは誤りです。

イ(×): 「学生」表の学生名や「科目」表の科目名は通常は主キーではなく,外部キーとして設定するものでもありません。

ウ(〇): 「成績」表の学生番号(「学生」表を参照)と科目コード(「科目」表を参照)が外部キーとして適切です。

エ(×): 「成績」表の成績列は他の表を参照しないため,外部キーではありません。

ポイント

外部キーは「参照する側(子表)」に設定されます。外部キーが設定されると参照整合性制約が働き,親表に存在しない値を子表に挿入することができなくなります。a/b/c などの組み合わせ問題と同様に,各列の役割を一つひとつ整理して考えましょう。