応用情報技術者 2009年 秋期 午前2 問33
問題文
関係データベースにおいて、“注文”表から“商品”表へ参照制約が設定されている場合の記述のうち、適切なものはどれか。
選択肢
ア:“商品”表のタプルが存在すれば、それに対応する“注文”表のタプルは存在する。
イ:“商品”表のタプルと“注文”表のタプルはそれぞれ独立に存在する。
ウ:“注文”表のタプルが消滅すれば、それに対応する“商品”表のタプルも消滅する。
エ:“注文”表のタプルが存在すれば、それに対応する“商品”表のタプルは存在する。(正解)
関係データベースにおける参照制約の理解【午前2 解説】
要点まとめ
- 結論:参照制約では「子テーブルのレコードが存在するなら、親テーブルの対応レコードも必ず存在する」ことが保証されます。
- 根拠:参照制約はデータの整合性を保つため、外部キーが指す親テーブルのレコードが必須となるためです。
- 差がつくポイント:親子関係の方向性を正確に理解し、どちらが参照される側かを見極めることが重要です。
正解の理由
選択肢エ「“注文”表のタプルが存在すれば、それに対応する“商品”表のタプルは存在する。」が正解です。
これは“注文”表が“商品”表を参照しているため、注文データが存在するなら必ずその注文で指定された商品データも存在しなければならないという参照制約の基本ルールに合致します。
これは“注文”表が“商品”表を参照しているため、注文データが存在するなら必ずその注文で指定された商品データも存在しなければならないという参照制約の基本ルールに合致します。
よくある誤解
「親テーブルのレコードが存在すれば子テーブルのレコードも存在する」と誤解しやすいですが、参照制約は逆方向の保証です。
また、参照制約があるからといって子テーブルの削除が親テーブルの削除を引き起こすわけではありません。
また、参照制約があるからといって子テーブルの削除が親テーブルの削除を引き起こすわけではありません。
解法ステップ
- 参照制約の定義を確認する(外部キーが親テーブルの主キーを参照する)。
- “注文”表が子テーブル、“商品”表が親テーブルであることを理解する。
- 子テーブルのレコードが存在する場合、対応する親テーブルのレコードが必須であることを確認する。
- 選択肢の文言を親子関係の方向に照らし合わせて正誤を判断する。
選択肢別の誤答解説
- ア: 「親テーブルのレコードがあれば子テーブルのレコードもある」と誤認。参照制約は子→親の存在を保証する。
- イ: 「両テーブルが独立」としているが、参照制約がある以上独立ではない。
- ウ: 「子テーブルの削除で親テーブルも削除」とあるが、参照制約は通常このような連鎖削除を保証しない(オプション設定次第)。
- エ: 正解。子テーブルの存在が親テーブルの存在を保証する。
補足コラム
参照制約はデータベースの整合性を保つ重要な機能で、外部キー制約とも呼ばれます。
削除や更新時の動作(CASCADEやSET NULLなど)は制約設定で変わりますが、基本的な存在保証は常に成り立ちます。
また、参照制約違反はデータの不整合を防ぐため、挿入や更新時にエラーとなります。
削除や更新時の動作(CASCADEやSET NULLなど)は制約設定で変わりますが、基本的な存在保証は常に成り立ちます。
また、参照制約違反はデータの不整合を防ぐため、挿入や更新時にエラーとなります。
FAQ
Q: 参照制約があると親テーブルのレコードを削除できないのですか?
A: 基本的には子テーブルに参照されている親レコードは削除できませんが、CASCADE設定があれば連鎖削除されます。
A: 基本的には子テーブルに参照されている親レコードは削除できませんが、CASCADE設定があれば連鎖削除されます。
Q: 参照制約はどのように設定しますか?
A: 外部キー制約として、子テーブルのカラムに親テーブルの主キーを参照する制約を定義します。
A: 外部キー制約として、子テーブルのカラムに親テーブルの主キーを参照する制約を定義します。
関連キーワード: 参照制約、外部キー、データ整合性、関係データベース、主キー、子テーブル、親テーブル

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

