質問:
別のテーブルの非主キー列を指す外部キーを作成して参照整合性を維持するにはどうすればよいですか?
答え:
外部キーを作成するときに主キーを参照することが一般に推奨されますが、特定の条件下では、非主キーを指す外部キーを作成することが可能です。
解決策:
非主キーを指す外部キーを作成するには、参照されるテーブルのターゲット列に一意制約を適用する必要があります。これは、データの整合性を確保するには、列の値が一意である必要があることを意味します。
例:
次のテーブル構造を考えてみましょう:
<code class="language-sql">CREATE TABLE table1 ( ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY, AnotherID INT NOT NULL, SomeData VARCHAR(100) NOT NULL ); CREATE TABLE table2 ( ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY, AnotherID INT NOT NULL, MoreData VARCHAR(30) NOT NULL, CONSTRAINT fk_table2_table1 FOREIGN KEY (AnotherID) REFERENCES table1 (AnotherID) );</code>
この例では、table1 の AnotherID 列は主キーではありません。ただし、AnotherID 列を使用して table2 と table1 の間に外部キー関係を作成できる一意の制約があります。
代替:
主キー以外の列に一意制約を作成できない場合は、代わりに参照テーブルの主キーを外部キーとして使用することを検討してください。この方法はデータベースの完全性を強化するため、一般的に推奨されます。
以上が非主キー列への外部キーを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。