令和8年度 ITパスポート試験 公開問題 問72
関係データベースで管理している“口座”表,“顧客”表及び“取引明細”表がある。新たな顧客が口座の開設と同時に1万円を入金するとき,表にデータを追加する順序として,適切なものはどれか。ここで,下線のうち実線は主キーを,破線は外部キーを表す。

図の説明テキスト
データベースの3つのテーブル(口座、顧客、取引明細)の構造を示す図表。
口座
| 口座番号(実線下線: 主キー) | 口座種別 | 残高 | 顧客番号(破線下線: 外部キー) |
顧客
| 顧客番号(実線下線: 主キー) | 顧客名 |
取引明細
| 取引番号(実線下線: 主キー) | 取引日時 | 取引種別 | 取引金額 | 口座番号(破線下線: 外部キー) |
解答・解説
正解: イ. 顧客 → 口座 → 取引明細
関係データベースにおいて、ある表の列が別の表の主キーを参照している場合、その列を外部キーと呼びます。外部キーを持つ表(参照元)にデータを追加する際は、参照される表(参照先)にその主キーのデータが既に存在している必要があります。これを参照制約と言います。
本問の図表の構造を確認すると、以下の関係が成り立っています(実線下線は主キー、破線下線は外部キーを示します)。
- 「口座」表の顧客番号(破線下線)は、「顧客」表の顧客番号(実線下線)を参照する外部キーです。
- 「取引明細」表の口座番号(破線下線)は、「口座」表の口座番号(実線下線)を参照する外部キーです。
新たな顧客が口座を開設し、1万円を入金する場合、以下の手順でデータを追加する必要があります。
- 「顧客」表に新たな顧客データを追加する。(主キーとなる顧客番号が確定する)
- 「口座」表に新たな口座データを追加する。(1.で追加した顧客番号を外部キーとして使用する)
- 「取引明細」表に入金データ(取引金額: 1万円など)を追加する。(2.で追加した口座番号を外部キーとして使用する)
したがって、データを追加する適切な順序は「顧客 → 口座 → 取引明細」となります。
各選択肢の解説
- ア:「顧客」表に該当する顧客データが存在しない状態で「口座」表にデータを追加しようとするため、参照制約に違反します。
- イ:正解です。参照される表から順にデータが追加されているため、参照制約に違反しません。
- ウ:「口座」表に該当する口座データが存在しない状態で「取引明細」表にデータを追加しようとするため、参照制約に違反します。
- エ:「口座」表に該当する口座データが存在しない状態で「取引明細」表にデータを追加しようとするため、参照制約に違反します。