データベース|令和8年度 ITパスポート試験 問72
関係データベースで管理している“口座”表,“顧客”表及び“取引明細”表がある。新たな顧客が口座の開設と同時に1万円を入金するとき,表にデータを追加する順序として,適切なものはどれか。ここで,下線のうち実線は主キーを,破線は外部キーを表す。
口座
| 口座番号 | 口座種別 | 残高 | 顧客番号 |
|---|
(実線=主キー: 口座番号 / 破線=外部キー: 顧客番号)
顧客
| 顧客番号 | 顧客名 |
|---|
(実線=主キー: 顧客番号)
取引明細
| 取引番号 | 取引日時 | 取引種別 | 取引金額 | 口座番号 |
|---|
(実線=主キー: 取引番号 / 破線=外部キー: 口座番号)
- 口座 → 顧客 → 取引明細
- ✓ これが正解顧客 → 口座 → 取引明細
- 顧客 → 取引明細 → 口座
- 取引明細 → 口座 → 顧客
解説
指される側から、顧客・口座・取引明細の順に追加します。
表と表が外部キーで結ばれているとき、指し示す先の行が存在しない値は登録できません。口座の表は顧客番号で顧客の表を指しており、取引明細の表は口座番号で口座の表を指しています。したがって、まず指される側から順に用意しなければなりません。はじめに顧客の行を作り、次にその顧客番号を持つ口座の行を作り、最後にその口座番号を持つ取引明細の行を作ります。顧客、口座、取引明細の順に追加するのが適切です。消すときは逆の順になります。指されている行を先に消すと、指している側が行き先を失うので、指している側から片づけます。この決まりを仕組みとして持たせておけば、うっかり順序を誤っても、データベースの側が拒んでくれます。
ほかの選択肢はなぜ違うのか
- 口座から始めています。ところが口座の行には顧客番号の欄があり、そこへ書ける値は顧客の表に載っているものに限られます。まだ誰も登録されていない段階では、書ける値そのものが存在しないため、この順では最初の一行から詰まります。
- 顧客の次に取引明細を追加しています。取引明細の行は口座番号で口座の表を指しているため、口座がまだ作られていない時点では登録できません。口座を飛ばして先へ進もうとすると、書けるはずのない値を書くことになります。
- 取引明細から追加しています。指し示す先である口座も顧客も無い状態から始めることになり、指される側が先という順序と真っ向から食い違います。順序を丸ごと裏返した形なので、最初の一行の時点で登録できません。
この問題に関係する言葉
- 外部キー
- 関係データベースデータを表の形で持ち、表どうしを結びつけて扱う、最も広く使われているデータベース。設計に使うE-R図は、この形での実装を前提にしません。
出典:令和8年度 ITパスポート試験 問72(改変:原典の図表をテキストに書き起こした)
同じ単元をまとめて解くならデータベースへ。
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)