Olá Pessoal,
Hoje estaremos abordando a criação de uma tabela com chave estrangeira ou foreign key.
Abordaremos então:
- O que é uma chave estrangeira(FK)?
- Colocando em prática
- Por que usar?
Bom pra começar chave estrangeira ou foreign key, é a relação entre duas tabelas tendo na tabela “mãe” a referência da tabela “filho”.
Ficou confuso?
vamos exemplificar, todos nós sabemos que um cliente precisa morar em uma cidade, então temos a tabela “mãe” que é a Cliente, onde nos atributos tem a referência da tabela filho que é a Cidade, conforme mostro a seguir:
Cliente Cidade
( (
ClienteId(PK) CidadeId(PK)
Nome Cidade
Endereco Estado
Telefone )
CidadeId(FK)
)
reparem que coloquei uma coluna chamada CidadeId, o que é essa CidadeId? Nada mais é que a chave primaria da tabela Cidade e a chave estrangeira da tabela Clientes.
Pois na hora de inserir registros na tabela de Clientes, ao invés de inserirmos Campinas, Vinhedo, Valinhos, nós armazenaremos a referência delas na tabela de Cidade.
CidadeId Cidade Estado
1 Campinas SP
2 Valinhos SP
3 Vinhedo SP
Na tabela de Cliente só iremos armazenar 1,2 ou 3, que são os registros existentes na tabela de Cidade, caso um “engraçadinho” tente inserir um 4 por exemplo, sem que ele esteja na tabela de Cidade dará um erro de chave estrangeira, não sendo possível a gravação.
Agora entendi, mas como crio uma chave estrangeira?
Simples, iremos criar as tabelas Cliente e Cidade primeiro. Uma boa prática para criação de tabelas, é sempre começar pelas tabelas simples, ou seja, aquelas que não possuem chave estrangeira.
CREATE TABLE Cidade
(
CidadeId int not null IDENTITY(1,1),
Cidade nvarchar(64) not null CONSTRAINT UQ_Cidade_Cidade UNIQUE,
Estado char(2) not null,
CONSTRAINT PK_Cidade_CidadeId PRIMARY KEY(CidadeId)
)
CREATE TABLE Cliente
(
ClienteId int not null IDENTITY(1,1),
Nome nvarchar(128) not null,
Endereco nvarchar(128) not null,
CidadeId int not null,
CONSTRAINT PK_Cidade_ClienteId PRIMARY KEY(ClienteId),
CONSTRAINT FK_Cliente_Cidade_CidadeId FOREIGN KEY(CidadeId) REFERENCES Cidade(CidadeId)
)
Repare que na tabela Cliente, eu crio a chave estrangeira, mas esse não é o único jeito de criar. Poderiamos ter criado as tabelas Cliente/Cidade, e depois usar a keyword ALTER TABLE para estar adicionando a chave, conforme mostro abaixo:
ALTER TABLE Cliente
ADD CONSTRAINT FK_Cliente_Cidade_CidadeId
FOREIGN KEY(CidadeId)
REFERENCES Cidade(CidadeId)
Bom, já entendi o que é, já criei a chave, mas por que utiliza-la?
Pois bem, utilizamos ela para:
* Manter a concistência do banco de dados
* Para criação de indices, na qual estaremos vendo adiante.
* Para otimização do banco de dados.
* Para facilitar a manutenção.
Pessoal, por hoje é só, quem tiver dúvidas no assunto, pode comentar que eu respondo ou ainda me mandar e-mail: marcelinho.ruliz@gmail.com
Abraço,
Té mais.
Tags: chave estrangeira, foreign key, SQL Server