Baixe o app para aproveitar ainda mais
Prévia do material em texto
Centro Universitário Estácio do Ceará Profa Josyane Lannes Florenzano de Souza Fonte: http://marcelo.todoinfo.com.br/sql-server-criacao-de-tabelas-com-chave-estrangeira/ SQL Server – Criação de tabelas com chave estrangeira - O que é uma chave estrangeira (FK)? - 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 (ClienteId(PK), Nome, Endereco, CidadeId(FK)) Cidade (CidadeId(PK) Cidade Estado) Observem 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. Entendeu agora, certo? 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 varchar(64) not null CONSTRAINT Q_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 varchar (128) not null, Endereco varchar(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) ) Observe que na tabela Cliente, eu crio a chave estrangeira, mas esse não é o único jeito de criar. Poderíamos ter criado as tabelas Cliente/Cidade, e depois usar a keyword ALTER TABLE para adicionar 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 utilizá-la? Pois bem, utilizamos ela para: * Manter a consistência do banco de dados * Para criação de índices, na qual estaremos vendo adiante. * Para otimização do banco de dados. * Para facilitar a manutenção.
Compartilhar