平成24年度 秋期 基本情報技術者試験 午前 問31
テクノロジ/データベース関係データベースの“注文”表の“顧客番号”は,“顧客”表の主キー“顧客番号”を参照する外部キーである。このとき,参照の整合性を損なうデータ操作はどれか。ここで,ア~エの記述におけるデータの並びは,それぞれの表の列の並びと同順とする。 注文:伝票番号,顧客番号 0001,C005 0002,K001 0003,C005 0004,D010 顧客:顧客番号,顧客名 C005,福島 D010,千葉 K001,長野 L035,宮崎 (注:本サイトでは原問題の表を文字表記に変換しています)
出典:平成24年度 秋期 基本情報技術者試験 午前 問31
- ア“顧客”表の行 L035,宮崎 を削除する。
- イ“注文”表に行 0005,D010 を追加する。
- ウ“注文”表に行 0006,F020 を追加する。
- エ“注文”表の行 0002,K001 を削除する。
正解:ウ
解説
参照整合性は,外部キーの値が参照先の主キーに必ず存在することを保証する制約です。“注文”表に新しい行を追加するとき,その顧客番号が“顧客”表に存在しなければ整合性が損なわれます。選択肢ウの追加行の顧客番号F020は“顧客”表に存在しないため,これを追加すると参照整合性が損なわれます。
選択肢ごとの解説
- ア誤り。L035(宮崎)はどの“注文”表の行からも参照されていないため,削除しても参照整合性は損なわれません。
- イ誤り。追加する顧客番号D010は既に“顧客”表に存在するため,参照整合性は損なわれません。
- ウ正しい。追加する顧客番号F020は“顧客”表に存在しないため,このデータを追加すると参照先が存在しない外部キーとなり,参照整合性が損なわれます。
- エ誤り。“注文”表の行を削除しても,参照先である“顧客”表のデータには影響がなく,参照整合性は損なわれません。