このような外部キーFOREIGN KEY(name) REFERENCES User(name)
またはこのようなものを定義します。なぜ、いつ制約を使用する必要があるのですか?制約の目的がよくわかりません。
2 に答える
外部キーの制約の目的は、他のテーブルにまだ参照がある間は、メインテーブルのレコードを削除できないようにすることです。制約がない場合、データベースに無効なデータが含まれ、参照整合性が侵害されます。
制約(PRIMARY KEY、FOREIGN KEY、およびCHECK制約を含む)の目的は、データに関する特定の事実を強制するようにデータベースエンジンに指示することです。
たとえば、customers
テーブルとorders
テーブルがあり、両方のテーブルに列がある場合、テーブルに存在しないcustomer_id
注文を記録することは違法な条件である可能性があります。customer_id
customers
その場合、inを主キーとして宣言し、inをで主キーcustomer_id
を参照する外部キーとして宣言できます。その宣言を行うと、データベースエンジンは、その関係の違反を引き起こすSQLステートメントを拒否します(存在するものを削除したり、存在しないものを作成したりすることはできません)。customers
customer_id
orders
customers
customer
orders
order
customer
制約を使用すると、データベースへのアクセスに使用されているアプリケーションやユーザーインターフェイスに関係なく、不正なデータがシステムに侵入しないことが保証されるため、アプリケーションレベルでロジックを適用するよりもはるかに優れています。アプリケーションレベルでリレーショナル整合性を適用する場合は、データベースへの将来のインターフェイスでロジックが一貫して正しく適用されることを期待する必要があります。データベーステーブルへの直接アクセスを許可する汎用アプリケーションでロジックを適用することはできません。