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