Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

criar chave estrangeira sem chave primária


Muito boa pergunta. Não há razão fundamental para que uma restrição referencial não faça referência a algo diferente de uma chave candidata. Existe até um nome para essas restrições:Dependências de Inclusão. Uma chave estrangeira é apenas um tipo de dependência de inclusão em que o destino da restrição é uma chave candidata.

Infelizmente, o SQL não fornece um bom suporte para dependências de inclusão ou mesmo para restrições referenciais em geral. O SQL limita suas chamadas restrições FOREIGN KEY para referenciar as colunas de uma restrição UNIQUE ou PRIMARY KEY (não necessariamente uma chave candidata).

Então, o que você encontrou é realmente uma limitação duvidosa do SQL. Isso não significa que você está fazendo algo muito errado.