問題

関係データベースにおける外部キー制約に関する記述として、適切なものはどれか。

ア)外部キー制約は、テーブル内の主キーの値が重複しないことを保証するための制約である。

イ)外部キー制約は、あるテーブルの列の値が、別のテーブルの主キー(または一意キー)の値のいずれかと一致すること(または特定の条件下でNULLであること)を保証し、テーブル間の参照整合性を維持する制約である。

ウ)外部キー制約を設定すると、参照元テーブルと参照先テーブルの間でデータ型が異なっていても常に整合性が保たれる。

エ)外部キー制約が設定されている場合、参照先テーブルの行を自由に削除でき、参照元テーブルへの影響は一切考慮されない。

解答・解説を見る

正解: イ)

解説:

  • ア)主キーの値の重複を防ぐのは「主キー制約(一意性制約)」の役割です。外部キー制約の説明として誤りです。
  • イ)外部キー制約は、あるテーブル(子テーブル)の列の値が、参照先の別テーブル(親テーブル)の主キーまたは一意キーの値のいずれかと一致することを保証する制約であり、これにより存在しない親レコードを参照するような不整合(参照整合性違反)を防ぎます。正解です。
  • ウ)外部キー制約を正しく機能させるためには、参照元と参照先の列のデータ型は互換性がある(一般には一致している)必要があり、「データ型が異なっていても常に整合性が保たれる」は誤りです。
  • エ)外部キー制約が設定されている場合、参照されている親テーブルの行を削除しようとすると、通常はエラーになるか、あらかじめ設定された動作(連鎖削除:CASCADE、NULL設定など)に従って処理されます。「自由に削除でき、影響は一切考慮されない」は誤りです。

重要キーワード

用語説明
外部キー制約参照先テーブルの主キーとの整合性を保証する制約
参照整合性テーブル間の参照関係に矛盾がない状態
CASCADE親レコード削除時に子レコードも連鎖的に削除する設定
主キー制約列の値の一意性・非NULLを保証する制約