Chave estrangeira

Definição - o que significa chave estrangeira?

Uma chave estrangeira é uma coluna ou grupo de colunas em uma tabela de banco de dados relacional que fornece um link entre os dados em duas tabelas. Ele atua como uma referência cruzada entre as tabelas porque faz referência à chave primária de outra tabela, estabelecendo, assim, um link entre elas.

A maioria das tabelas em um sistema de banco de dados relacional adere ao conceito de chave estrangeira. Em bancos de dados e armazéns de dados complexos, os dados em um domínio devem ser adicionados em várias tabelas, mantendo assim um relacionamento entre eles. O conceito de integridade referencial é derivado da teoria da chave estrangeira.

As chaves estrangeiras e sua implementação são mais complexas do que as chaves primárias.

Definirtec explica chave estrangeira

Embora uma chave primária possa existir por si mesma, uma chave estrangeira deve sempre fazer referência a uma chave primária em algum lugar. A tabela original que contém a chave primária é a tabela pai (também conhecida como tabela referenciada). Essa chave pode ser referenciada por várias chaves estrangeiras de outras tabelas, conhecidas como tabelas “filhas”.

Para qualquer coluna que atue como uma chave estrangeira, um valor correspondente deve existir na tabela vinculada. Cuidado especial deve ser tomado ao inserir e remover dados da coluna de chave estrangeira, pois uma exclusão ou inserção descuidada pode destruir o relacionamento entre as duas tabelas.

Se a integridade entre os dois bancos de dados for comprometida, podem ocorrer erros.

Por exemplo, se houver duas tabelas, cliente e pedido, um relacionamento pode ser criado entre elas, introduzindo uma chave estrangeira na tabela de pedido que se refere ao CUSTOMER_ID na tabela do cliente. A coluna CUSTOMER_ID existe nas tabelas de clientes e pedidos.

O CUSTOMER_ID na tabela de pedidos torna-se a chave estrangeira, referindo-se à chave primária na tabela de clientes. Para inserir uma entrada na tabela de pedidos, a restrição de chave estrangeira deve ser satisfeita.

Uma tentativa de inserir um CUSTOMER_ID que não está presente na tabela do cliente falha, mantendo assim a integridade referencial da tabela.

Em bancos de dados do mundo real, a integridade entre as tabelas de chave estrangeira e primária pode ser garantida aplicando restrições referenciais sempre que as linhas de uma tabela referenciada são atualizadas ou excluídas.

Algumas ações referenciais associadas a uma ação de chave estrangeira incluem o seguinte:

Cascata

Quando as linhas da tabela pai são excluídas, as colunas de chave estrangeira correspondentes na tabela filho também são excluídas, criando uma exclusão em cascata.

Definir nulo

Quando uma linha referenciada na tabela pai é excluída ou atualizada, os valores da chave estrangeira na linha de referência são definidos como nulos para manter a integridade referencial.

gatilhos

As ações referenciais são normalmente implementadas como gatilhos. Em muitos aspectos, as ações de chave estrangeira são semelhantes aos gatilhos definidos pelo usuário. Para garantir a execução adequada, as ações referenciais ordenadas às vezes são substituídas por seus gatilhos definidos pelo usuário equivalentes.

Conjunto padrão

Essa ação referencial é semelhante a "definir nulo". Os valores da chave estrangeira na tabela filho são definidos para o valor da coluna padrão quando a linha referenciada na tabela pai é excluída ou atualizada.

restringir

Esta é a ação referencial normal associada a uma chave estrangeira. Um valor na tabela pai não pode ser excluído ou atualizado, desde que seja referido por uma chave estrangeira em outra tabela.

Nenhuma Ação

Esta ação referencial é semelhante em função à ação "restringir", exceto que uma verificação sem ação é realizada somente após tentar alterar a tabela.