外部キーの設定基準|ITパスポート 令和8年 公開問題 問57

出典:令和8年 公開問題 問57 分野:技術要素 / データベース
関係データベースで管理している“学生”表,“科目”表,“成績”表がある。1人の学生は複数の科目を履修するものとし,“学生”表に登録されていない学生や,“科目”表に登録されていない科目は“成績”表に登録できないものとするとき,外部キーとして設定するのが適切なものはどれか。ここで,表中の下線は主キーを表す。

学生

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

科目

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

成績

学生番号科目コード成績
G001K001優
G001K002可
G002K002良
G002K003優
  • ア:“学生”表の学生番号,“成績”表の学生番号
  • イ:“学生”表の学生名,“科目”表の科目名
  • ウ:“成績”表の学生番号と科目コード
  • エ:“成績”表の成績
解説

外部キーは、別の表にある主キーなどを参照して、表どうしのデータの整合性を保つための列です。成績表に登録する学生番号は学生表に存在し、科目コードは科目表に存在しなければなりません。

そのため、成績表の「学生番号」を学生表の「学生番号」に対する外部キー、成績表の「科目コード」を科目表の「科目コード」に対する外部キーとして設定します。これはそれぞれ別の表を参照する二つの外部キーであり、二つの列を一組として一つの表に参照させる意味ではありません。

したがって、ウが適切です。

❌他選択肢が誤りの理由

ア:“学生”表の学生番号,“成績”表の学生番号
⇒学生表の学生番号は学生表の主キーであり、ここで設定したい外部キーそのものではありません。科目表との参照関係も不足します。


イ:“学生”表の学生名,“科目”表の科目名
⇒学生名・科目名は、それぞれ親表の主キーとして示された列ではありません。


エ:“成績”表の成績
⇒成績は評価結果を記録する列であり、学生表や科目表の主キーを参照するものではありません。


TSUNAGARU-ADVICE

まず押さえたいこと

外部キーは親テーブルの主キーを参照してデータの整合性を維持するために設定します。子テーブルの該当カラムは必ず親テーブルに存在する値でなければなりません。

迷ったときの判断軸

外部キーを設定するときは、参照元(親側)の主キーを確認し、子側のカラムがそれに対応しているかを見ます。外部キーは子テーブルの列に設定され、親テーブルの主キーなどを参照します。外部キーに設定する列が、子テーブルの主キーの一部を兼ねることもあります。

次の学習につなげるために

外部キー制約の理解はリレーショナルデータベース設計の基礎です。次は正規化や主キー・候補キーの概念を深めて、より効率的かつ整合性の高いDB設計に役立てましょう。