⏱ 7分 ★★★★★ 頻出:高

外部キーの役割

参照整合性・ON DELETE CASCADE・親子テーブルの関係を図で理解

外部キー=「他テーブルの主キーへの参照」

外部キー(Foreign Key / FK)は、あるテーブルの列が別テーブルの主キー(または一意キー)を参照する仕組みです。

外部キーにより「存在しない顧客IDを注文に入れる」といったデータの矛盾を防ぎます。これを参照整合性と言います。

外部キーの関係図

customers(親テーブル)
customer_id🔑name
1001田中
1002鈴木
orders(子テーブル)
order_id🔑customer_id🔗amount
20011001¥5,000
20021002¥3,200
20031001¥8,900
🔑主キー 🔗外部キー(customersのcustomer_idを参照)

ON DELETE / ON UPDATE 動作

親テーブルのレコードを削除・更新したとき、子テーブルの外部キー列をどう扱うかを指定します。

動作説明向いているケース
RESTRICT子が存在する場合は削除・更新を拒否厳格な整合性が必要な場合
CASCADE親の削除・更新に子も連動注文明細など親子が運命共同体
SET NULL子の外部キー列をNULLにする担当者削除後も履歴を残したい
NO ACTION何もしない(DB依存でエラーになる場合も)デフォルト動作
試験では「CASCADEを使うと子テーブルも自動削除」「RESTRICTは子がある限り親削除不可」が問われる。

よくある勘違い

「外部キーは必須」は誤り。外部キーを設定しなくても動くが、参照整合性が保証されなくなるだけ。ただし試験では「参照整合性の保証に外部キー制約が有効」という理解が必要。
「外部キーの値はNULLにできない」は誤り。外部キー列はNULLを許可できます(「担当者未定」などの状態を表現)。
🧠 確認クイズ
Q1. 外部キーが参照しているのはどれか?
Q2. ON DELETE CASCADE を設定した場合、親レコードを削除するとどうなるか?
Q3. 参照整合性とは何か?