すべての本で、外部キーは実際には他のテーブルの主キーであると書かれていますが、他のテーブルの主キーではない外部キーを使用できますか
はい-別のテーブルの一意のインデックスを参照する外部キーを持つことができます。
CREATE UNIQUE INDEX UX01_YourTable ON dbo.YourTable(SomeUniqueColumn)
ALTER TABLE dbo.YourChildTable
ADD CONSTRAINT FK_ChildTable_Table
FOREIGN KEY(YourFKColumn) REFERENCES dbo.YourTable(SomeUniqueColumn)
定義により、外部キーはいくつかのテーブルの候補キーを参照する必要があります。必ずしも主キーである必要はありません。
詳細については、SQLでFOREIGN KEYと呼ばれる制約は、リレーショナルモデルでの外部キーの教科書定義と完全に同じではありません。 SQLのFOREIGN KEY制約は、次の理由で異なります。
はい、一意のキーは主キーのサブセットですが正確な主キーではないため、他のテーブルでは一意のキーである外部キーが存在する可能性があります。
したがって、外部キーが別のテーブルの一意のキーである可能性があります。
一般的な標準的な答えはノーです。外部キーが他のテーブルの列を一意に参照している場合にのみ可能です。つまり、外部キーは他のテーブルの候補キーでなければならず、主キーもテーブルの候補キーです。