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