ITパスポート

問57

ITパスポート過去問 令和8年度(2026年)問57

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

ITパスポート 令和8年 問57 学生テーブルITパスポート 令和8年 問57 科目テーブルITパスポート 令和8年 問57 成績テーブル

選択肢

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

正解と解き方・学習ポイント(AI解説)

正解:
あなたの回答:未回答

外部キーは、他の表の主キーに存在する値だけを登録できるようにするために、参照する側の表に設定する列です。問題の条件では、「成績」表に「学生」表にない学生番号や、「科目」表にない科目コードを登録できない必要があります。したがって、「成績」表の学生番号は「学生」表の学生番号を参照する外部キー、「成績」表の科目コードは「科目」表の科目コードを参照する外部キーとして設定するのが適切です。

不正解

“学生”表の学生番号は参照される側(親表)の主キーであり、外部キーは参照する側(子表)である“成績”表に設定します。

不正解

学生名や科目名は重複する可能性があるため、主キーを参照する外部キーとしては扱わないのが一般的です。

正解

“成績”表の学生番号を“学生”表の学生番号に、“成績”表の科目コードを“科目”表の科目コードに、それぞれ外部キーとして設定します。これにより、未登録の学生や未登録の科目を“成績”表へ登録できません。

不正解

成績は履修結果の値であり、“学生”表や“科目”表の主キーを参照する列ではありません。外部キーにしても、未登録の学生や科目を登録できない条件を満たせません。

Point

この問題は、参照整合性を満たすために、子表(成績)から親表(学生、科目)の主キーを参照する外部キー列を判断できるかを確認しています。

解くために必要な知識

この問題を解くには、主キー、外部キー、参照整合性制約の基本を理解している必要があります。

用語の整理

用語 意味
主キー 表の各行を一意に識別する列(または列の組)です。原則として重複できません。
外部キー 他の表の主キー(または一意な列)を参照する列です。参照先に存在する値だけを登録できるようにします。
参照整合性制約 外部キーの値が、参照先の表に存在する値でなければならないという制約です。

図表から分かる表の役割

“学生”表

  • 学生番号(主キー)で学生を一意に識別します。

“科目”表

  • 科目コード(主キー)で科目を一意に識別します。

“成績”表

  • 学生番号と科目コードで、誰がどの科目を履修したかを表します。

  • 成績は履修結果です。

外部キーにする列の決め方

条件から決める

  • 未登録の学生を登録できない。

    • “成績”表の学生番号は、“学生”表の学生番号を参照する外部キーにします。
  • 未登録の科目を登録できない。

    • “成績”表の科目コードは、“科目”表の科目コードを参照する外部キーにします。

名称列が外部キーに不向きな理由

  • 学生名や科目名は、同じ値になる可能性があるため、一意に識別できない可能性があります。

  • 外部キーは原則として主キーを参照します。

問題の解法手順

図表の読み取り

主キー(下線)を確認します

  • “学生”表:学生番号

  • “科目”表:科目コード

  • “成績”表:学生番号と科目コード(複合主キー)

解く手順

1. 問題文の制約から、参照関係を決めます

  • “学生”表に登録されていない学生は“成績”表に登録できない。

    • よって、“成績”表の学生番号は、“学生”表の学生番号を参照する必要があります。
  • “科目”表に登録されていない科目は“成績”表に登録できない。

    • よって、“成績”表の科目コードは、“科目”表の科目コードを参照する必要があります。

2. 外部キーにする列を決めます

  • 外部キーは参照する側(子表)の列です。

  • よって、“成績”表の学生番号と科目コードを外部キーとして設定するのが適切です。

選択肢ごとの解説

不正解

“学生”表の学生番号は参照される側(親表)の主キーであり、外部キーは参照する側(子表)である“成績”表に設定します。

不正解

学生名や科目名は重複する可能性があるため、主キーを参照する外部キーとしては扱わないのが一般的です。

正解

“成績”表の学生番号を“学生”表の学生番号に、“成績”表の科目コードを“科目”表の科目コードに、それぞれ外部キーとして設定します。これにより、未登録の学生や未登録の科目を“成績”表へ登録できません。

不正解

成績は履修結果の値であり、“学生”表や“科目”表の主キーを参照する列ではありません。外部キーにしても、未登録の学生や科目を登録できない条件を満たせません。

まとめ

外部キーは、他の表の主キーに存在する値だけを登録できるようにするために、参照する側の表に設定する列です。問題の条件では、「成績」表に「学生」表にない学生番号や、「科目」表にない科目コードを登録できない必要があります。したがって、「成績」表の学生番号は「学生」表の学生番号を参照する外部キー、「成績」表の科目コードは「科目」表の科目コードを参照する外部キーとして設定するのが適切です。

テクノロジ系 > 技術要素 > データベース

順次、単語を追加予定です。もうしばらくお待ちください。