это записано в каждой книге, что внешние ключи являются на самом деле первичным ключом в некоторой другой таблице, но можем мы иметь внешний ключ, который не является первичным ключом ни в какой другой таблице
Да - вы можете иметь внешний ключ, который ссылается на уникальный индекс в другой таблице.
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)
По определению внешний ключ должен ссылаться на кандидатский ключ некоторой таблицы. Это не обязательно должен быть первичный ключ.
В качестве детали ограничение, называемое FOREIGN KEY в SQL, не совсем эквивалентно хрестоматийному определению внешнего ключа в реляционной модели. Ограничение FOREIGN KEY в SQL отличается тем, что: