問題
関係データベースにおける外部キー制約に関する記述として、適切なものはどれか。
ア)外部キー制約は、テーブル内の主キーの値が重複しないことを保証するための制約である。
イ)外部キー制約は、あるテーブルの列の値が、別のテーブルの主キー(または一意キー)の値のいずれかと一致すること(または特定の条件下でNULLであること)を保証し、テーブル間の参照整合性を維持する制約である。
ウ)外部キー制約を設定すると、参照元テーブルと参照先テーブルの間でデータ型が異なっていても常に整合性が保たれる。
エ)外部キー制約が設定されている場合、参照先テーブルの行を自由に削除でき、参照元テーブルへの影響は一切考慮されない。
解答・解説を見る
正解: イ)
解説:
- ア)主キーの値の重複を防ぐのは「主キー制約(一意性制約)」の役割です。外部キー制約の説明として誤りです。
- イ)外部キー制約は、あるテーブル(子テーブル)の列の値が、参照先の別テーブル(親テーブル)の主キーまたは一意キーの値のいずれかと一致することを保証する制約であり、これにより存在しない親レコードを参照するような不整合(参照整合性違反)を防ぎます。正解です。
- ウ)外部キー制約を正しく機能させるためには、参照元と参照先の列のデータ型は互換性がある(一般には一致している)必要があり、「データ型が異なっていても常に整合性が保たれる」は誤りです。
- エ)外部キー制約が設定されている場合、参照されている親テーブルの行を削除しようとすると、通常はエラーになるか、あらかじめ設定された動作(連鎖削除:CASCADE、NULL設定など)に従って処理されます。「自由に削除でき、影響は一切考慮されない」は誤りです。
重要キーワード
| 用語 | 説明 |
|---|---|
| 外部キー制約 | 参照先テーブルの主キーとの整合性を保証する制約 |
| 参照整合性 | テーブル間の参照関係に矛盾がない状態 |
| CASCADE | 親レコード削除時に子レコードも連鎖的に削除する設定 |
| 主キー制約 | 列の値の一意性・非NULLを保証する制約 |