🔑 CHAVE ESTRANGEIRA (FOREIGN KEY) E INTEGRIDADE
Se a Chave Primária é o DNA, a Chave Estrangeira (FK) é o sistema circulatório que conecta as tabelas, permitindo que o banco de dados se comporte como um organismo único e coerente. 🛡️🧩
Objetivo: Compreender o conceito de integridade referencial e dominar as ações de gatilho (CASCADE, RESTRICT) para garantir a consistência das associações entre tabelas.
📗 PASSO 1: O Conceito de Relacionamento Pai-Filho
Uma Foreign Key é um atributo em uma tabela que aponta obrigatoriamente para a Primary Key de outra tabela.
📊 Relacionamento de Identidade
erDiagram
DEPARTAMENTO ||--o{ FUNCIONARIO : "possui"
DEPARTAMENTO {
int id_depto PK
string nome
}
FUNCIONARIO {
int id_func PK
string nome
int **fk_depto** FK
}
📗 PASSO 2: A Lei da Integridade Referencial
O SGBD (MySQL 8.4 ou Postgres 17) atua como um fiscal rigoroso. As regras são:
- 🚫 Inserção de Órfãos: Não se cadastra Filho em Pai inexistente.
- 🔒 Proteção contra Exclusão: Não se apaga o Pai se houver Filhos vinculados.
📗 PASSO 3: Ações de Gatilho (Trigger Actions)
O que ocorre com o "Filho" quando o "Pai" é alterado? Definimos isso com ON DELETE e ON UPDATE:
| Ação Técnica | Comportamento no SGBD | Risco Arquitetural |
|---|---|---|
RESTRICT | Impede a mudança no Pai se houver filhos. | Baixo |
CASCADE | Apaga/Atualiza os filhos automaticamente. | CRÍTICO |
SET NULL | Transforma a FK do filho em NULL. | Médio |
🛠️ Implementação Profissional
ALTER TABLE funcionario
ADD CONSTRAINT fk_depto_func
FOREIGN KEY (fk_depto) REFERENCES departamento(id_depto)
ON DELETE RESTRICT
ON UPDATE CASCADE;
📗 PASSO 4: O Perigo do CASCADE em Cascata
Se você configurar CLIENTE -> PEDIDO como ON DELETE CASCADE, ao apagar um cliente, todos os pedidos dele somem instantaneamente.
💡 Regra de Ouro: Em sistemas financeiros, o
CASCADEé proibido. Prefira oRESTRICTe obrigue a aplicação a lidar com a exclusão de forma consciente. 🚀🛡️