応用情報技術者 2010年 秋期 午前2 問32
問題文
次の定義において、“在庫”表の製品番号に定義された参照制約によって拒否される可能性のある操作はどれか。ここで、実線は主キーを、破線は外部キーを表す。
在庫(在庫管理番号、製品番号、在庫量)
製品(製品番号、製品名、型、単価)
選択肢
ア:“在庫”表の行削除
イ:“在庫”表の表削除
ウ:“在庫”表への行追加(正解)
エ:“製品”表への行追加
在庫表の参照制約による操作拒否の可能性【午前2 解説】
要点まとめ
- 結論:在庫表の製品番号に設定された外部キー制約により、存在しない製品番号の行追加が拒否されます。
- 根拠:外部キー制約は参照先の主キーに存在しない値の挿入を禁止し、データの整合性を保ちます。
- 差がつくポイント:外部キー制約の役割と、どの操作が参照整合性違反を引き起こすかを正確に理解することが重要です。
正解の理由
選択肢ウ「在庫表への行追加」が正解です。
在庫表の「製品番号」は製品表の主キー「製品番号」を参照する外部キーです。
このため、製品表に存在しない製品番号を在庫表に追加しようとすると、参照制約違反で操作が拒否されます。
一方、行削除や表削除は在庫表の操作であり、外部キー制約の参照先である製品表の整合性には直接影響しません。
製品表への行追加は主キーの追加であり、外部キー制約違反にはなりません。
在庫表の「製品番号」は製品表の主キー「製品番号」を参照する外部キーです。
このため、製品表に存在しない製品番号を在庫表に追加しようとすると、参照制約違反で操作が拒否されます。
一方、行削除や表削除は在庫表の操作であり、外部キー制約の参照先である製品表の整合性には直接影響しません。
製品表への行追加は主キーの追加であり、外部キー制約違反にはなりません。
よくある誤解
外部キー制約は「削除」や「表削除」時にも必ず拒否されると思いがちですが、参照先の存在確認が主な役割です。
また、参照元テーブルへの行追加だけが制約違反になる点を誤解しやすいです。
また、参照元テーブルへの行追加だけが制約違反になる点を誤解しやすいです。
解法ステップ
- 外部キー制約の定義を確認し、どのテーブルのどのカラムが参照しているか把握する。
- 参照元(外部キーを持つテーブル)と参照先(主キーを持つテーブル)を明確にする。
- 各操作が参照元・参照先のどちらに対するものかを判別する。
- 参照元テーブルに存在しない参照先の主キーを持つ行を追加すると制約違反になることを理解する。
- 選択肢の操作内容と外部キー制約の関係を照らし合わせて正解を選ぶ。
選択肢別の誤答解説
- ア: 在庫表の行削除
→ 参照元テーブルの行削除は制約違反にならず、拒否されません。 - イ: 在庫表の表削除
→ テーブル全体の削除は制約違反の対象外であり、拒否されません。 - ウ: 在庫表への行追加
→ 製品表に存在しない製品番号を追加すると外部キー制約違反で拒否されます。 - エ: 製品表への行追加
→ 参照先テーブルへの行追加は制約違反にならず、拒否されません。
補足コラム
外部キー制約はリレーショナルデータベースの整合性を保つ重要な機能です。
参照先の主キーが存在しない値を参照元に登録できないため、データの一貫性が保証されます。
また、参照先の行削除時には「カスケード削除」や「制約違反拒否」などの動作設定が可能です。
参照先の主キーが存在しない値を参照元に登録できないため、データの一貫性が保証されます。
また、参照先の行削除時には「カスケード削除」や「制約違反拒否」などの動作設定が可能です。
FAQ
Q: 外部キー制約はどのような場合に違反となりますか?
A: 参照先に存在しない主キーを参照元に登録しようとした場合や、参照先の主キーを削除しようとした場合に違反となります。
A: 参照先に存在しない主キーを参照元に登録しようとした場合や、参照先の主キーを削除しようとした場合に違反となります。
Q: 製品表の行削除は在庫表に影響しますか?
A: 外部キー制約が設定されている場合、参照先の行削除は参照元に影響し、制約違反で拒否されるかカスケード削除が行われます。
A: 外部キー制約が設定されている場合、参照先の行削除は参照元に影響し、制約違反で拒否されるかカスケード削除が行われます。
関連キーワード: 外部キー制約、参照整合性、リレーショナルデータベース、主キー、データ整合性

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

