2

このような外部キーFOREIGN KEY(name) REFERENCES User(name)またはこのようなものを定義します。なぜ、いつ制約を使用する必要があるのですか?制約の目的がよくわかりません。

4

2 に答える 2

3

外部キーの制約の目的は、他のテーブルにまだ参照がある間は、メインテーブルのレコードを削除できないようにすることです。制約がない場合、データベースに無効なデータが含まれ、参照整合性が侵害されます。

于 2012-10-10T14:25:56.477 に答える
3

制約(PRIMARY KEY、FOREIGN KEY、およびCHECK制約を含む)の目的は、データに関する特定の事実を強制するようにデータベースエンジンに指示することです。

たとえば、customersテーブルとordersテーブルがあり、両方のテーブルに列がある場合、テーブルに存在しないcustomer_id注文を記録することは違法な条件である可能性があります。customer_idcustomers

その場合、inを主キーとして宣言し、inをで主キーcustomer_idを参照する外部キーとして宣言できます。その宣言を行うと、データベースエンジンは、その関係の違反を引き起こすSQLステートメントを拒否します(存在するものを削除したり、存在しないものを作成したりすることはできません)。customerscustomer_idorderscustomerscustomerordersordercustomer

制約を使用すると、データベースへのアクセスに使用されているアプリケーションやユーザーインターフェイスに関係なく、不正なデータがシステムに侵入しないことが保証されるため、アプリケーションレベルでロジックを適用するよりもはるかに優れています。アプリケーションレベルでリレーショナル整合性を適用する場合は、データベースへの将来のインターフェイスでロジックが一貫して正しく適用されることを期待する必要があります。データベーステーブルへの直接アクセスを許可する汎用アプリケーションでロジックを適用することはできません。

于 2012-10-10T14:28:23.950 に答える