問72
頻出度★★★
関係データベースで管理している“口座”表,“顧客”表及び“取引明細”表がある。新たな顧客が口座の開設と同時に1万円を入金するとき,表にデータを追加する順序として,適切なものはどれか。ここで,下線のうち実線は主キーを,破線は外部キーを表す。 口座
| 口座番号(主キー) | 口座種別 | 残高 | 顧客番号(外部キー) |
|---|
顧客
| 顧客番号(主キー) | 顧客名 |
|---|
取引明細
| 取引番号(主キー) | 取引日時 | 取引種別 | 取引金額 | 口座番号(外部キー) |
|---|
この問題の解説と、これまでの解答の記録です。
関係データベースで管理している“口座”表,“顧客”表及び“取引明細”表がある。新たな顧客が口座の開設と同時に1万円を入金するとき,表にデータを追加する順序として,適切なものはどれか。ここで,下線のうち実線は主キーを,破線は外部キーを表す。 口座
| 口座番号(主キー) | 口座種別 | 残高 | 顧客番号(外部キー) |
|---|
顧客
| 顧客番号(主キー) | 顧客名 |
|---|
取引明細
| 取引番号(主キー) | 取引日時 | 取引種別 | 取引金額 | 口座番号(外部キー) |
|---|
口座 → 顧客 の順だが、「口座」表は外部キー「顧客番号」で「顧客」表を参照するため、顧客がまだ存在しない状態で口座を追加すると参照整合性に違反する。顧客を先に登録しなければならない。
正解 外部キーは「参照先の主キーが既に存在する行」しか指せない(参照整合性)。図より「口座」表は外部キー「顧客番号」で「顧客」表を参照し、「取引明細」表は外部キー「口座番号」で「口座」表を参照している。よって参照される側を先に登録する必要があり、追加順序は 顧客 → 口座 → 取引明細 となる。これは新規顧客の登録 → その顧客の口座開設 → 入金(取引)の業務の流れとも一致する。したがって正解はイ。
顧客 → 取引明細 → 口座 の順だが、「取引明細」表は外部キー「口座番号」で「口座」表を参照する。口座をまだ登録していない段階で取引明細を追加できず、誤り。
取引明細 → 口座 → 顧客 と参照関係を完全に逆にした順序。最初の取引明細は存在しない口座を参照し、次の口座も存在しない顧客を参照することになり、いずれも参照整合性に違反する。