問72 表にデータを追加する順序

ITパスポート 令和8年度 公開問題、全100問のうちの問72。

出典:令和8年度 ITパスポート試験 公開問題 問72(3 つの表は原本の画像を文字に書き起こして 1 つの表にまとめ、下線の意味を列の名前のあとに書いた)

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

表列
口座口座番号 (主キー),口座種別,残高,顧客番号 (外部キー)
顧客顧客番号 (主キー),顧客名
取引明細取引番号 (主キー),取引日時,取引種別,取引金額,口座番号 (外部キー)
  1. ア口座 → 顧客 → 取引明細
  2. イ顧客 → 口座 → 取引明細
  3. ウ顧客 → 取引明細 → 口座
  4. エ取引明細 → 口座 → 顧客
答えと解説を開く

正解はイです。

“口座”表の顧客番号は“顧客”表を指す外部キーです。だから、先に“顧客”表にその顧客がいないと、口座を登録できません。同じように、“取引明細”表の口座番号は“口座”表を指すので、口座ができてからでないと入金の取引明細を登録できません。順番は、顧客、口座、取引明細です。だから正解はイです。

ほかの選択肢が違う理由

  • ア口座を先に登録しようとしても、口座の顧客番号が指す顧客がまだいないので、登録できません。
  • ウ取引明細の口座番号が指す口座がまだないので、取引明細を先に登録できません。
  • エ取引明細も口座も、指す先の行がまだない状態で登録しようとしているので、どちらもできません。

仕組み

外部キーがあると、DBMS は「指す先にない値」の登録を断ります。そのため、追加は指される側から、削除は指す側から行います。

この問題の 3 つの追加は、1 つのトランザクションにまとめるのがふつうです。途中で失敗したら全部取り消せば、口座だけできて入金がない、といった中途半端な状態を防げます。

この問に出る言葉