クエリに厳密に必要なわけではありません。本当です。それはいくつかの理由で存在します:
- 何も指さないものを挿入しないようにするためのテーブルの制約として;
- オプティマイザーの手がかりとして。および
- 歴史的な理由から、もっと必要とされていました。
(1)はおそらく3つの重要なものの1つです。これは、参照整合性 と呼ばれます。 。これは、外部キーに値がある場合、その値を親テーブルの主キーとして持つ対応するレコードがあることを意味します。
とはいえ、すべてのデータベースが参照整合性をサポートしているわけではなく(MySQL / MyISAMテーブルなど)、必ずしもそれを強制するわけではありません(パフォーマンス上の理由から)。