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