外部キーは、あるテーブルのレコードを別のテーブルのレコードにリンクするものです。注文テーブルには customer_id フィールドがあります。このフィールドは、顧客テーブルの主キーを指す外部キーです。このリンクによって、すべての注文が実在する顧客に関連付けられていることが保証されます。リンクがない場合、注文が存在しない顧客を参照してしまう可能性があります。データベースはこの関係を強制的に維持します。
外部キーは、単に関係性を記録するだけでなく、参照整合性を強制します。顧客テーブルに存在しない customer_id を持つ注文を挿入しようとすると、データベースはそれを拒否します。注文を持つ顧客を削除しようとすると、データベースはルールに応じて削除をブロックするか、カスケードします。この強制により、孤立レコードやデータの不整合が防止されます。外部キーはクエリのパフォーマンス向上にも役立ちます。データベースは関係性を利用して結合を最適化できます。すべてのデータベースが外部キーを強制するわけではありません。一部の NoSQL データベースでは、参照整合性はアプリケーションに委ねられています。これにより、開発者はより柔軟に対応できますが、責任も大きくなります。アプリケーションは参照が有効であることを保証する必要があります。それが失敗すると、データは不整合になります。外部キーは制約です。制約は、大惨事を防ぐまでは不便なものですが、
外部キールール
- 制限 — 参照が存在する場合は削除をブロックする
- カスケード — 参照レコードを自動的に削除または更新します
- null を設定する — 削除時に外部キーを null に設定する
- 何もしない — 操作を許可し、後で確認する
外部キーは、リンクと保証の両方の役割を果たします。リンクはテーブル同士を接続し、保証はそれらの整合性を維持します。
Comments
No comments yet. Be the first to share a thought.
Leave a comment