令和8年度試験問題 問57

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

  • "学生"表の学生番号,"成績"表の学生番号
  • "学生"表の学生名,"科目"表の科目名
  • "成績"表の学生番号と科目コード
  • "成績"表の成績
正解 問題へ
分野 :テクノロジ系
中分類:データベース
小分類:データベース設計
解説
外部キーは、関係データベースにおいて、2つの表を関連付けるために設定される列です。ある表の列が、別の表の主キーを参照している場合、その列は外部キーとして扱われます。

外部キーを設定することの効果は次の3つです。
  • 参照先の表に存在しないデータの登録を防げる
  • 誤ったデータに更新されることを防ぐ
  • 関連するデータの削除や更新を制御できる
設問では、"学生"表に登録されていない学生や、"科目"表に登録されていない科目は、"成績"表に登録できないものとしています。存在しない値の登録を防ぐためには、"成績"表を参照する側、"学生"表と"科目"表を参照先とし、
  • "成績"表の"学生番号"は、"学生"表の"学生番号"を参照する
  • "成績"表の"科目コード"は、"科目"表の"科目コード"を参照する
という参照関係を設定するのが適切です。このため、外部キーとして設定するのは、参照する側の"成績"表に存在する、"学生番号"と"科目コード"です。

したがって「ウ」が適切となります。

【別解】
主キーと外部キーを見分ける際には、同じ値が何回出てくるかという多重度の考え方が重要です。ある表の中で1件のデータを一意に識別できる列が主キーであり、同じ値が複数存在しえる列は外部キーになるのが原則です。

設問のデータベースでは、"学生"表と"成績"表が"学生番号"列によって関連付けられています。"成績"表では、1人の学生が複数の科目を履修するため、同じ"学生番号"が複数回出てくる可能性があります。したがって、"成績"表の"学生番号"列は外部キーです。

同じように、"科目"表と"成績"表は"科目コード"列によって関連付けられています。"成績"表では、同じ科目を複数の学生が履修することがあるため、同じ"科目コード"が複数回出てくる可能性があります。したがって、"成績"表の"科目コード"列も外部キーです。

以上より、正解は「ウ」となります。
57_1.png

Pagetop