2012-04-16 35 views
1

だから、私はそうのように作成されたテーブルを持っていますか?かなり簡単な質問のように思えますが、それは可能かどうかですか?あなたの人の助けてくれてありがとう!外部キーの参照技術キー

答えて

1

はい - 完全に簡単です。完全な複合インデックスを指定するだけで済みます。あなたの他の表には、ここにPKを構成するこれらの4つの列を持っている必要があり、その後、FK制約は次のようになります。

ALTER TABLE dbo.YourOtherTable 
ADD CONSTRAINT FK_YourOtherTable_CharacterSavingThrow 
FOREIGN KEY(CharacterCode, FortitudeSaveCode, ReflexSaveCode, WilSaveCode) 
REFERENCES dbo.CharacterSavingThrow(CharacterCode, FortitudeSaveCode, ReflexSaveCode, WilSaveCode) 

ポイントは次のとおりです。あなたが持っている場合複合主キー(以上で構成されましたその表を参照したい他の表もすべての列を持ち、それらの列をすべてFK関係に使用する必要があります。

また、これらの2つのテーブルを結合するクエリを作成する場合は、化合物PKに含まれるすべてのカラムをにする必要があります。

これは、PKとして4つの列を使用する際の主な欠点の1つです。FK関係やJOINクエリが非常に扱いにくくなり、書き込みや使用に迷惑をかけます。そのため、そのような場合は、別の代理キーをテーブルに使用することを選択します。あなたのdbo.CharacterSavingThrowテーブルに新しいINT IDENTITYを導入してプライマリキーとして機能させると、はそのテーブルを参照し、そのテーブルを使用するJOINクエリを書くのがずっと簡単になります。

+1

ハハ、申し分なく。どうもありがとう!私はおそらくサロゲートキーを使用すると思います...私のSQL教師はそれに合っているでしょう! = D – Jack

関連する問題