平成22年度 秋期 午前 問33
データベース
参照の整合性を損なうデータ操作
関係データベース "注文" 表の "顧客番号" は,"顧客" 表の主キー "顧客番号" に対応する外部キーである。このとき,参照の整合性を損なうデータ操作はどれか。ここで,ア〜エの記述におけるデータの並びは,それぞれの表の列の並びと同順とする。
注文
| 伝票番号 | 顧客番号 |
|---|---|
| 0001 | C005 |
| 0002 | K001 |
| 0003 | C005 |
| 0004 | D010 |
顧客
| 顧客番号 | 顧客名 |
|---|---|
| C005 | 福島 |
| D010 | 千葉 |
| K001 | 長野 |
| L035 | 宮崎 |
- ア"顧客" 表の行 〔L035|宮崎〕 を削除する。
- イ"注文" 表に行 〔0005|D010〕 を追加する。
- ウ"注文" 表に行 〔0006|F020〕 を追加する。
- エ"注文" 表の行 〔0002|K001〕 を削除する。
答えと解説を見る
✓ これが正解ウ"注文" 表に行 〔0006|F020〕 を追加する。
解説
指し先の無い顧客番号を注文表に足すと壊れます。
参照の整合性とは、参照する側の表に置かれた値が、参照される側の表に必ず存在している状態のことです。ここでは注文表の顧客番号が、顧客表の主キーである顧客番号を指す外部キーになっています。ですから注文表に現れる顧客番号は、すべて顧客表のどれかの行に見つからなければなりません。操作を一つずつ当てるときは、その操作のあとで注文表の各行の顧客番号が顧客表にそろって見つかるかを確かめます。設問の顧客表は C005、D010、K001、L035 の四行、注文表は C005 が二行と K001、D010 が一行ずつです。判定の軸は二つです。追加する操作なら、加える値が参照される側に用意されているか。削除する操作なら、消す行を指している値が参照する側に残らないかです。
ほかの選択肢はなぜ違うのか
- ア"顧客" 表の行 〔L035|宮崎〕 を…:この顧客番号を持つ行は、注文表のどこにも現れていません。指している側がいないので、顧客表からこの行を消しても行き先を失う値は生じません。
- イ"注文" 表に行 〔0005|D010〕…:加えようとしている顧客番号は、顧客表に行として用意されています。指し先がある値なので、注文表に新しい行を足しても対応づけは保たれたままです。
- エ"注文" 表の行 〔0002|K001〕…:参照する側の行が一つ減るだけの操作です。顧客表の側は何も変わらず、注文表に残る値もそれぞれ指し先を持ったままなので、対応づけは崩れません。
この問題の用語
- 関係データベースデータを表の形で持ち、表どうしを結びつけて扱う、最も広く使われているデータベース。データの定義や操作にはSQLを使います。
出典:平成22年度 秋期 基本情報技術者試験 午前 問33(改変:原典の図表をテキストに書き起こした)
同じ用語が出る問題
- 令和6年度 科目A 問15:非構造化データに関する問題(関係データベース)
- 平成29年度 春期 午前 問25:関数従属に関する問題(関係データベース)
- 平成28年度 秋期 午前 問26:E-R図に関する問題(関係データベース)
- 平成28年度 春期 午前 問29:外部キーを定義する目的(関係データベース)
- 平成28年度 春期 午前 問26:関係モデルに関する問題(関係データベース)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)