Em bancos de dados relacionais, as tabelas geralmente possuem relações entre si.
Para criar essas ligações utilizamos a Chave Estrangeira (Foreign Key).
A chave estrangeira é um campo que referencia a chave primária de outra tabela.
Seu objetivo é estabelecer relacionamentos entre registros de tabelas diferentes.
Ela garante que apenas valores válidos sejam armazenados.
Imagine um sistema de vendas com uma tabela de clientes e outra de pedidos.
| Cliente | ID Cliente |
|---|---|
| Maria | 1 |
| Carlos | 2 |
Cada pedido precisa indicar a qual cliente pertence.
| ID Pedido | ID Cliente | Valor |
|---|---|---|
| 1001 | 1 | R$ 250,00 |
| 1002 | 2 | R$ 480,00 |
O campo ID Cliente é uma chave estrangeira que aponta para a tabela de clientes.
CLIENTE
---------
PK id_cliente
nome
PEDIDO
---------
PK id_pedido
FK id_cliente
valor
A sigla FK significa Foreign Key.
CREATE TABLE cliente (
id_cliente INT PRIMARY KEY,
nome VARCHAR(100)
);
CREATE TABLE pedido (
id_pedido INT PRIMARY KEY,
valor DECIMAL(10,2),
id_cliente INT,
FOREIGN KEY (id_cliente)
REFERENCES cliente(id_cliente)
);
O MySQL verifica se o valor informado na chave estrangeira existe na tabela principal.
Se o valor não existir, a inserção será rejeitada.
Suponha que existam apenas clientes com IDs 1 e 2.
INSERT INTO pedido
VALUES (1003, 300.00, 10);
O comando falhará porque o cliente de código 10 não existe.
| Relacionamento | Descrição |
|---|---|
| 1 para 1 | Um registro se relaciona com apenas um registro. |
| 1 para N | Um registro pode possuir vários relacionados. |
| N para N | Vários registros se relacionam com vários registros. |
| Chave Primária (PK) | Chave Estrangeira (FK) |
|---|---|
| Identifica um registro. | Relaciona registros. |
| Não se repete. | Pode se repetir. |
| Existe na própria tabela. | Referencia outra tabela. |
| Não aceita NULL normalmente. | Pode aceitar NULL dependendo da regra. |