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

Não há chaves primárias ou candidatas na tabela referenciada que correspondam à lista de colunas de referência na chave estrangeira


As chaves estrangeiras funcionam unindo uma coluna a uma chave exclusiva em outra tabela, e essa chave exclusiva deve ser definida como alguma forma de índice exclusivo, seja a chave primária ou algum outro índice exclusivo.

No momento, o único índice exclusivo que você tem é um índice composto em ISBN, Title que é sua chave primária.

Existem várias opções disponíveis para você, dependendo exatamente do que o BookTitle contém e do relacionamento dos dados nele contidos.

Eu arriscaria um palpite de que o ISBN é único para cada linha no BookTitle. Na suposição de que esse é o caso, altere sua chave primária para apenas no ISBN e altere o BookCopy para que, em vez do título, você tenha ISBN e participe disso.

Se você precisar manter sua chave primária como ISBN, Title então você precisa armazenar o ISBN em BookCopy, bem como o título e a chave estrangeira em ambas as colunas, OU você precisa criar um índice exclusivo em BookTitle(Title) como um índice distinto.

De forma mais geral, você precisa ter certeza de que a coluna ou colunas que você tem em seu REFERENCES cláusula corresponde exatamente a um índice exclusivo na tabela pai:no seu caso, ela falha porque você não tem um único índice exclusivo em Title sozinho.