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