本文へスキップ

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

この問題の解説と、これまでの解答の記録です。

問57
頻出度★★★

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

学生番号学生名
G001鈴木 次郎
G002山田 春子

科目

科目コード科目名
K001データベース
K002コンピュータ
K003ネットワーク

成績

学生番号科目コード成績
G001K001優
G001K002可
G002K002良
G002K003優
出典 令和8年度 ITパスポート試験 問57
解説

問 57

  • 不正解ア

    “学生”表の学生番号は参照される側の主キーであって外部キーではない。外部キーは参照する子表(ここでは“成績”表)側の列に設定する。また学生の対応づけだけで科目の参照が抜けており、設問の制約を満たせない。

  • 不正解イ

    学生名や科目名は主キーではない一般の属性で、他表を一意に参照できない。外部キーは相手表の主キーを参照する列でなければならず、名前列を外部キーにはできない。

  • ウ

    正解 正解は「ウ」。外部キーとは、別の表の主キー(または一意な列)を参照することで、表どうしの整合性(参照整合性)を保つ列のことで、参照する側(子表)に設定する。設問の制約「“学生”表に無い学生や“科目”表に無い科目は“成績”表に登録できない」は、まさに“成績”表が“学生”表と“科目”表を参照していることを意味する。“成績”表の「学生番号」は“学生”表の主キー(学生番号)を、「科目コード」は“科目”表の主キー(科目コード)を参照する。したがって外部キーとして設定すべきは“成績”表の「学生番号」と「科目コード」であり、ウが適切。

  • 不正解エ

    “成績”表の成績(優・良・可など)は評価を表す単なるデータ項目で、他のどの表の主キーも参照していない。参照整合性を担う外部キーには当たらない。

ここがポイント
  • 外部キーは「他表の主キーを参照する列」で、参照する側(子表)に設定し、表間の参照整合性を保つ。
  • “成績”表のように複数の表を参照する明細表では、各親表の主キーに対応する列(学生番号・科目コード)がそれぞれ外部キーになる。
用語

解答の記録