A FOREIGN KEY (Chave Estrangeira) é uma constraint utilizada para criar relacionamentos entre tabelas em um banco de dados relacional.
Ela permite que uma tabela faça referência a uma chave primária existente em outra tabela.
Imagine um sistema escolar:
| Tabela | Informação |
|---|---|
| Alunos | Dados dos estudantes |
| Matrículas | Relaciona alunos e cursos |
CREATE TABLE alunos (
id INT PRIMARY KEY,
nome VARCHAR(100)
);
A tabela alunos possui a chave primária id.
CREATE TABLE matriculas (
id INT PRIMARY KEY,
aluno_id INT,
FOREIGN KEY (aluno_id)
REFERENCES alunos(id)
);
O campo aluno_id referencia o campo id da tabela alunos.
| Alunos | Matrículas |
|---|---|
| ID = 1 João |
Aluno_ID = 1 Curso PHP |
| ID = 2 Maria |
Aluno_ID = 2 Curso MySQL |
O valor da FOREIGN KEY deve existir na PRIMARY KEY da tabela relacionada.
FOREIGN KEY (campo)
REFERENCES tabela(campo);
O MySQL impede inserir valores que não existam na tabela principal.
INSERT INTO matriculas
(aluno_id)
VALUES (99);
Define o comportamento quando um registro relacionado é excluído.
| Opção | Funcionamento |
|---|---|
| CASCADE | Exclui registros relacionados |
| RESTRICT | Impede exclusão |
| SET NULL | Define valor como NULL |
CREATE TABLE pedidos (
id INT PRIMARY KEY,
cliente_id INT,
FOREIGN KEY(cliente_id)
REFERENCES clientes(id)
ON DELETE CASCADE
);
| PRIMARY KEY | FOREIGN KEY |
|---|---|
| Identifica registros | Relaciona tabelas |
| Única na tabela | Pode se repetir |
| Não aceita NULL | Pode aceitar NULL dependendo da regra |
| Origem do relacionamento | Referência da relação |