応用情報技術者 2016年 春期 午前2 問29
問題文
次の表において、“在庫” 表の製品番号に定義された参照制約によって拒否される可能性がある操作はどれか。ここで、実線の下線は主キーを、破線の下線は外部キーを表す。
在庫(在庫管理番号、製品番号、在庫量)
製品(製品番号、製品名、型、単価)
選択肢
ア:“在庫” 表の行削除
イ:“在庫” 表の表削除
ウ:“在庫” 表への行追加(正解)
エ:“製品”表への行追加
在庫表の参照制約による操作拒否の判定【午前2 解説】
要点まとめ
- 結論:在庫表の製品番号に設定された外部キー制約により、存在しない製品番号の行追加は拒否されます。
- 根拠:外部キー制約は参照先の主キーに存在しない値の挿入を禁止し、データの整合性を保ちます。
- 差がつくポイント:外部キー制約の役割と、どの操作が参照整合性違反を引き起こすかを正確に理解することが重要です。
正解の理由
「ウ: “在庫” 表への行追加」が正解です。
在庫表の製品番号は製品表の製品番号を参照する外部キーです。存在しない製品番号を在庫表に追加しようとすると、参照整合性違反となり操作が拒否されます。
一方、行削除や表削除は参照先の製品表に影響を与えないため、外部キー制約による拒否の対象にはなりません。また、製品表への行追加は外部キー制約の参照先側の操作であり、制約違反にはなりません。
在庫表の製品番号は製品表の製品番号を参照する外部キーです。存在しない製品番号を在庫表に追加しようとすると、参照整合性違反となり操作が拒否されます。
一方、行削除や表削除は参照先の製品表に影響を与えないため、外部キー制約による拒否の対象にはなりません。また、製品表への行追加は外部キー制約の参照先側の操作であり、制約違反にはなりません。
よくある誤解
外部キー制約は「削除時」にのみ働くと思い込み、追加時の制約違反を見落としがちです。
また、外部キーは参照先の存在を保証するため、参照元の追加時にも厳密にチェックされます。
また、外部キーは参照先の存在を保証するため、参照元の追加時にも厳密にチェックされます。
解法ステップ
- 在庫表の製品番号が外部キーであることを確認する。
- 外部キー制約の意味を理解し、参照先(製品表の製品番号)に存在しない値の追加が禁止されることを認識する。
- 各選択肢の操作が外部キー制約に違反するかどうかを検討する。
- 在庫表への行追加で、存在しない製品番号を追加する場合に制約違反となることを判断する。
- 他の操作は制約違反にならないため、正解は「ウ」と決定する。
選択肢別の誤答解説
- ア: “在庫” 表の行削除
→ 外部キー制約は参照先の整合性を保つためのものであり、参照元の行削除は制約違反になりません。 - イ: “在庫” 表の表削除
→ 表全体の削除は制約違反の対象外であり、制約による拒否は通常ありません。 - ウ: “在庫” 表への行追加
→ 存在しない製品番号を追加すると外部キー制約違反となり拒否されます。 - エ: “製品” 表への行追加
→ 参照先の追加は制約違反にならず、むしろ整合性を保つ操作です。
補足コラム
外部キー制約はリレーショナルデータベースの基本的な整合性制約の一つで、参照整合性を維持します。
主キーはテーブル内で一意の値を保証し、外部キーは他テーブルの主キーを参照することでデータの一貫性を保ちます。
この制約により、存在しない親データを参照する子データの追加や、親データの削除による孤立した子データの発生を防ぎます。
主キーはテーブル内で一意の値を保証し、外部キーは他テーブルの主キーを参照することでデータの一貫性を保ちます。
この制約により、存在しない親データを参照する子データの追加や、親データの削除による孤立した子データの発生を防ぎます。
FAQ
Q: 外部キー制約はどのような操作で違反が起きますか?
A: 主に参照先に存在しない値を参照元に追加する場合や、参照先の行を削除・更新して参照整合性が崩れる場合に違反が発生します。
A: 主に参照先に存在しない値を参照元に追加する場合や、参照先の行を削除・更新して参照整合性が崩れる場合に違反が発生します。
Q: 表全体の削除は外部キー制約に違反しますか?
A: 通常は違反しませんが、参照先のテーブルを削除すると参照元の外部キーが無効になるため、DBMSによっては制約違反やエラーとなる場合があります。
A: 通常は違反しませんが、参照先のテーブルを削除すると参照元の外部キーが無効になるため、DBMSによっては制約違反やエラーとなる場合があります。
関連キーワード: 外部キー制約、参照整合性、主キー、リレーショナルデータベース、データ整合性

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

