Uma chave estrangeira liga registos de uma tabela a registos de outra. Uma tabela de encomendas possui um campo `customer_id`. Este campo é uma chave externa que aponta para a chave primária da tabela de clientes. Esta ligação garante que cada encomenda pertence a um cliente real. Sem ela, os pedidos poderiam fazer referência a clientes que não existem. A base de dados impõe essa relação.
As chaves estrangeiras fazem mais do que documentar relações. Impõem integridade referencial. Se tentar introduzir um pedido com um `customer_id` que não existe na tabela de clientes, a base de dados irá rejeitá-lo. Se tentar eliminar um cliente que tenha encomendas, a base de dados bloqueará a eliminação ou propagá-la-á, dependendo da regra. Esta imposição evita registos órfãos e dados inconsistentes. As chaves estrangeiras também melhoram o desempenho das consultas. A base de dados pode usar o relacionamento para otimizar as junções. Nem todas as bases de dados impõem chaves estrangeiras. Algumas bases de dados NoSQL deixam a integridade referencial a cargo da aplicação. Isto dá aos programadores mais flexibilidade, mas também mais responsabilidade. A aplicação deve garantir que as referências são válidas. Se isto falhar, os dados tornam-se inconsistentes. As chaves estrangeiras são uma restrição. As restrições são inconvenientes até que impeçam um desastre.
Regras de chave estrangeira
- Restringir — bloquear a eliminação se existirem referências.
- Cascata — apague ou atualize automaticamente os registos de referência
- Definir como nulo — define a chave estrangeira como nula na eliminação.
- Não é necessária ação — permita a operação e verifique mais tarde.
Uma chave externa é uma ligação e uma garantia. A ligação liga tabelas. A garantia mantém a coerência entre elas.
Comments
No comments yet. Be the first to share a thought.
Leave a comment