読み方 : がいぶキーせいやく
外部キー制約【FOREIGN KEY constraint】参照制約
別名 :referential constraint/参照整合性制約/referential integrity constraint
外部キー制約とは?
リレーショナルデータベースにおいて、あるテーブルの列が別のテーブルの主キーと対応する値のみを持てるよう強制する仕組み。テーブル間のデータの整合性を保つための制約の一つである。

データベースでは、複数のテーブルが互いに関連し合いながらデータを管理する。たとえば「注文テーブル」が「顧客テーブル」の顧客IDを参照する場合、存在しない顧客IDを注文に登録できてしまうと、データに矛盾が生じる。外部キー制約はこのような矛盾を未然に防ぎ、参照先に存在する値しか登録できないようにするものである。
外部キー制約を設定すると、データの追加・更新・削除の際に自動的な検証が行われる。参照先に存在しない値を挿入しようとするとエラーが発生し、処理は中断される。また、参照されているレコードを削除しようとした場合にも、デフォルトではエラーとなって削除が阻まれる。
一般的なSQL文では、CREATE TABLE文のCONSTRAINT句の内部で「FOREIGN KEY」キーワードを用いることで制約を作成することができる。参照先のレコードが削除・更新された際の動作は設定によって変更でき、「CASCADE」を指定すると参照元も連動して削除・更新される。「SET NULL」では参照元の値がNULLに置き換えられ、「RESTRICT」や「NO ACTION」では操作自体が禁止される。用途に応じてこれらを使い分ける。
通常、外部キー制約はデータベースの設計段階でテーブルを定義する際に指定するが、後から追加することも可能である。MySQLのMyISAMエンジンのように、外部キー制約に対応していないストレージエンジンやデータベース製品も存在するため、DBMSが対応しているか事前に確認が必要である。大規模システムでは、パフォーマンス上の理由から、あえて外部キー制約を使用せずアプリケーション側で整合性を担保する設計を採ることもある。
関連用語
他の辞典等による「外部キー制約」の解説 (外部サイト)
資格試験などの「外部キー制約」の出題履歴
▼ 基本情報技術者試験
【平29秋 問27】 SQL文において FOREIGN KEY と REFERENCES を用いて指定する制約はどれか。