データベース|令和8年度 ITパスポート試験 問57
関係データベースで管理している“学生”表,“科目”表,“成績”表がある。1人の学生は複数の科目を履修するものとし,“学生”表に登録されていない学生や,“科目”表に登録されていない科目は“成績”表に登録できないものとするとき,外部キーとして設定するのが適切なものはどれか。ここで,表中の下線は主キーを表す。
学生
| <u>学生番号</u> | 学生名 |
|---|---|
| G001 | 鈴木 次郎 |
| G002 | 山田 春子 |
科目
| <u>科目コード</u> | 科目名 |
|---|---|
| K001 | データベース |
| K002 | コンピュータ |
| K003 | ネットワーク |
成績
| <u>学生番号</u> | <u>科目コード</u> | 成績 |
|---|---|---|
| G001 | K001 | 優 |
| G001 | K002 | 可 |
| G002 | K002 | 良 |
| G002 | K003 | 優 |
- “学生”表の学生番号,“成績”表の学生番号
- “学生”表の学生名,“科目”表の科目名
- ✓ これが正解“成績”表の学生番号と科目コード
- “成績”表の成績
解説
成績表の学生番号と科目コードが、外部キーに当たります。
外部キーは、ある表の列が、別の表の主キーを指し示していることを表す仕組みです。これを設定しておくと、指し示す先に存在しない値を登録できなくなります。成績表の学生番号は学生表の主キーである学生番号を指し、成績表の科目コードは科目表の主キーである科目コードを指しています。この二つを外部キーとして設定すれば、学生表に登録されていない学生や、科目表に登録されていない科目を成績表に登録しようとしたときに、はじくことができます。設問が求める条件を満たすのは、成績表の学生番号と科目コードです。
ほかの選択肢はなぜ違うのか
- 学生表の学生番号と成績表の学生番号を挙げています。学生表の学生番号はその表の主キーであって、ほかの表を指し示す側ではありません。指す側と指される側が混じっています。
- 学生表の学生名と科目表の科目名を挙げています。どちらも主キーではなく、ほかの表の行を一つに定める働きももちません。指し示す先が決まらないので、外部キーにはなりません。
- 成績表の成績を挙げています。これは優や良といった評価そのものを入れる列であり、ほかの表の行を指し示すものではありません。主キーでも外部キーでもない、値を入れておくだけの列です。
この問題に関係する言葉
- 外部キー
- 主キー
- 関係データベースデータを表の形で持ち、表どうしを結びつけて扱う、最も広く使われているデータベース。設計に使うE-R図は、この形での実装を前提にしません。
出典:令和8年度 ITパスポート試験 問57(改変:原典の図表をテキストに書き起こした)
同じ単元をまとめて解くならデータベースへ。
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)