0

こんにちは私は2つの非常に基本的なテーブルを設定しました。1つのテーブルがルックアップとして機能し、IDフィールドが主キーになります。もう1つのテーブルは、ルックアップIDを外部キーとして使用します。

関係制約を作成したので、「メイン」テーブルで外部キーが使用されている場合、ルックアップから削除できなくなりました。

ただし、私の問題は、存在しない外部キーを使用してレコードを追加できることです。

私の考えでは、これは許可されるべきではありません。これを実施するために使用する必要のある設定と、これが一般的なデータベース設計であるかどうかを誰かに教えてもらえますか?

ありがとうデイブ

4

1 に答える 1

1

あなたの考え方は正しいです。優れたデータベース設計は、「参照整合性」と呼ばれるものを実施するための何らかの方法を提供します。これは、あなたが自分で導き出した概念の単なる流行語です。つまり、存在しない行を参照している場合は、外部キーを拒否する必要があります。参照整合性の一般的な説明については、次のWikipediaの記事を参照してください。短いです。

http://en.wikipedia.org/wiki/Referential_integrity

一部のpprogrammerは、プログラム内で参照整合性を強制したいと考えています。一般に、データベース内に参照整合性制約を定義し、DBMSに強制を行わせる方がはるかに優れた計画です。それはより簡単で、より速く、そしてより効果的です。

SQLデータ定義言語(DDL)は、テーブルを作成するときに外部キー制約を宣言する方法を提供します。構文はSQLの方言によって少し異なりますが、基本的にはすべて同じ考え方です。これがカプセルの要約です。

http://www.w3schools.com/sql/sql_foreignkey.asp

SQL Serverのドキュメントには、CREATETABLEコマンドでの参照整合性制約の説明が含まれている必要があります。

于 2012-12-06T12:28:00.313 に答える