外部キー は、あるテーブルのカラムが 別のテーブルの 主キー を指し示す ことで、表どうしを関連づける仕組みです。
たとえば「注文テーブル」の 会員ID を外部キーにして、「会員テーブル」の 会員ID(主キー)を指すようにします。
flowchart LR M["会員テーブル<br/>会員ID(主キー)・名前"] O["注文テーブル<br/>注文ID・会員ID(外部キー)・商品"] O -->|"会員IDが会員テーブルを指す"| M
外部キーには、データの矛盾を防ぐ大切な働きがあります。
- 存在しない相手を指せない … 会員テーブルにいない会員IDでは、注文を作れないよう縛れる。
- 不用意な削除を防げる … 注文が残っている会員を、うっかり消せないようにできる。
これにより、「注文はあるのに会員が存在しない」といった宙に浮いたデータ(参照の不整合)を防げます。正規化 で分けたテーブルを、正しくつなぎ直すための鍵になる仕組みです。