Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

🔑 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:

  1. 🚫 Inserção de Órfãos: Não se cadastra Filho em Pai inexistente.
  2. 🔒 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écnicaComportamento no SGBDRisco Arquitetural
RESTRICTImpede a mudança no Pai se houver filhos.Baixo
CASCADEApaga/Atualiza os filhos automaticamente.CRÍTICO
SET NULLTransforma 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 o RESTRICT e obrigue a aplicação a lidar com a exclusão de forma consciente. 🚀🛡️