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

- 口座 → 顧客 → 取引明細
- 顧客 → 口座 → 取引明細
- 顧客 → 取引明細 → 口座
- 取引明細 → 口座 → 顧客
[出典:ITパスポート試験 令和8年度 問72]
正解
正解は「イ」です。
解説
正解は「顧客 → 口座 → 取引明細」という順序です。関係データベースには「参照整合性制約」という重要なルールがあり、他の表のデータを参照する「外部キー」が設定されている場合、その参照先(主キー側)のデータが先に存在していなければなりません。
まず、新しく口座を作るためには、そもそも「誰の口座か」を確定させるための顧客情報が必要です。そのため、最初に「顧客」表へデータを登録します。次に、その顧客に関連付ける「口座」表へ登録を行います。この際、「口座」表にある「顧客番号(外部キー)」は、先ほど登録した「顧客」表の「顧客番号(主キー)」を指し示す必要があるため、顧客が先にいないとエラーになります。
最後に、作成された口座に対して「1万円の入金」という「取引明細」を登録します。「取引明細」表の「口座番号(外部キー)」は、「口座」表の「口座番号(主キー)」を参照しているため、口座ができた後でなければ入金記録を作ることができません。
これは、飲食店で例えると「まずお客様が来店し(顧客)、注文を受けるための伝票を作り(口座)、その伝票に具体的な注文内容を書き込む(取引明細)」という順番でなければ、事務処理が成立しないのと同じ理屈です。
ア(口座 → 顧客 → 取引明細):
「口座」表には「顧客番号」という外部キーが含まれています。参照先である「顧客」表にデータがない状態で口座を作ろうとすると、参照整合性制約に違反するため登録できません。
ウ(顧客 → 取引明細 → 口座):
「取引明細」表は「口座番号」を外部キーとして持っています。「口座」表にデータが登録される前に入金内容だけを先に登録しようとしても、どの口座の入金かが不明なためエラーになります。
エ(取引明細 → 口座 → 顧客):
完全に逆の順序です。外部キーを持つ「取引明細」や「口座」は、その土台となる親データ(主キー側)が確定していない状態ではシステムに受け入れられないため、不適切な順序となります。
難易度
この問題の難易度は、ITパスポート試験の中では標準的です。データベースの基本用語である「主キー」と「外部キー」の関係を正しく理解できているかを問う良問です。初学者にとっては、一見すると難しそうに見えますが、「参照している側は、参照される側より後に追加する」という依存関係のルール(親子関係)さえ把握してしまえば、パズルのように解くことができるため、得点源にしやすい問題と言えます。
用語補足
関係データベース (RDB):
データを複数の表形式で管理し、項目同士を関連付けるデータベースです。Excelのシートを複数使い、特定のIDでつなげるイメージです。
主キー (Primary Key):
表の中でデータを一意に特定するための項目です。出席番号やマイナンバーのように、重複が許されない「識別のための鍵」です。
外部キー (Foreign Key):
他の表の主キーを参照するための項目です。自分の表のデータが「どこの誰に関連しているか」を示すリンクの役割を果たします。
参照整合性制約:
外部キーで指定する値は、参照先の表に必ず存在しなければならないというルールです。存在しない実体のない番号を登録することを防ぎます。
対策
対策としては、問題文の図を見て「どの表がどの表を参照しているか」を矢印で書き込む習慣をつけましょう。外部キーが引かれている(破線の)項目から、参照先の主キー(実線の)項目へ矢印を引くと依存関係が明確になります。追加の順序は必ず「矢印の先(親)」から「矢印の根元(子)」へ向かうことを覚えておけば、どのような類似問題にも対応できます。

