msgbartop
SQL Server, Dicas, Rails, Mobile
msgbarbottom

16 Mar 09 SQL Server – Criação de tabelas com chave estrangeira

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

Leave a Comment

Spam Protection by WP-SpamFree