外部キーの設定基準|ITパスポート 令和8年 公開問題 問57
出典:令和8年 公開問題 問57
分野:技術要素 / データベース
関係データベースで管理している“学生”表,“科目”表,“成績”表がある。1人の学生は複数の科目を履修するものとし,“学生”表に登録されていない学生や,“科目”表に登録されていない科目は“成績”表に登録できないものとするとき,外部キーとして設定するのが適切なものはどれか。ここで,表中の下線は主キーを表す。
学生
| 学生番号 | 学生名 |
|---|---|
| G001 | 鈴木 次郎 |
| G002 | 山田 春子 |
科目
| 科目コード | 科目名 |
|---|---|
| K001 | データベース |
| K002 | コンピュータ |
| K003 | ネットワーク |
成績
| 学生番号 | 科目コード | 成績 |
|---|---|---|
| G001 | K001 | 優 |
| G001 | K002 | 可 |
| G002 | K002 | 良 |
| G002 | K003 | 優 |
- ア:“学生”表の学生番号,“成績”表の学生番号
- イ:“学生”表の学生名,“科目”表の科目名
- ウ:“成績”表の学生番号と科目コード
- エ:“成績”表の成績
TSUNAGARU-ADVICE
まず押さえたいこと
外部キーは親テーブルの主キーを参照してデータの整合性を維持するために設定します。子テーブルの該当カラムは必ず親テーブルに存在する値でなければなりません。
迷ったときの判断軸
外部キーを設定するときは、参照元(親側)の主キーを確認し、子側のカラムがそれに対応しているかを見ます。外部キーは子テーブルの列に設定され、親テーブルの主キーなどを参照します。外部キーに設定する列が、子テーブルの主キーの一部を兼ねることもあります。
次の学習につなげるために
外部キー制約の理解はリレーショナルデータベース設計の基礎です。次は正規化や主キー・候補キーの概念を深めて、より効率的かつ整合性の高いDB設計に役立てましょう。
外部キーは、別の表にある主キーなどを参照して、表どうしのデータの整合性を保つための列です。成績表に登録する学生番号は学生表に存在し、科目コードは科目表に存在しなければなりません。
そのため、成績表の「学生番号」を学生表の「学生番号」に対する外部キー、成績表の「科目コード」を科目表の「科目コード」に対する外部キーとして設定します。これはそれぞれ別の表を参照する二つの外部キーであり、二つの列を一組として一つの表に参照させる意味ではありません。
したがって、ウが適切です。
❌他選択肢が誤りの理由
ア:“学生”表の学生番号,“成績”表の学生番号
⇒学生表の学生番号は学生表の主キーであり、ここで設定したい外部キーそのものではありません。科目表との参照関係も不足します。
イ:“学生”表の学生名,“科目”表の科目名
⇒学生名・科目名は、それぞれ親表の主キーとして示された列ではありません。
エ:“成績”表の成績
⇒成績は評価結果を記録する列であり、学生表や科目表の主キーを参照するものではありません。