Seguindo a mesma linha dos artigos sobre banco de dados escritos anteriormente irei apresentar o script SQL para criação de chave estrangeira para tabelas.
Neste artigo não irei apresentar a estrutura do script e sim irei diretamente ao exemplo.
Vejamos:
begin transaction
use Exemplo;
go
--Código para criar a tabela primária
create
table tbPessoas(
CPF_CNPJ varchar(14) not null unique,
Nome varchar(70) not null,
Apelido varchar(70) null,
DataNascimento
date not null,
TelContato1
varchar(10) not null,
TelContato2
varchar(10) null,
TelContato3
varchar(10) null
)
go
alter
table tbPessoas
add constraint PK_CPF_CNPJ primary key ([CPF_CNPJ]);
--criando a tabela secundaria
create
table tbDependentes(
CodDependente
int not null unique,
Nome varchar(70) not null,
CPF_CNPJ varchar(14) not null
)
go
alter
table tbDependentes
add constraint PK_CodDependente primary
key ([CodDependente]);
go
alter
table tbDependentes
add constraint FK_CPF_CNPJ foreign key ([CPF_CNPJ]) references tbPessoas([CPF_CNPJ]);
rollback
- Foram criadas duas tabelas tbPessoas e tbDependentes
- Foram criadas duas constraints para chave primária
- PK_CPF_CNPJ - Como chave primária da tabela tbPessoas
- PK_CodDependente - Como chave primária da tabela tbDependentes
- Finalmente foi criada a constraint FK_CPF_CNPJ que efetua a ligação entre as tabelas tbDependentes e tbPessoas.
Obs.:
É importante lembrar que para criar uma chave estrangeira é preciso que as tabelas tenham chave primária. Não possuir chave primária NÃO vai gerar erro de execução somente erro de conceito relacional.
Não recomento utilização de campos identity para auto incrementar chave primária, visto que isso pode gerar problemas quando for necessário replicar dados ou trabalhar com este dado antes de ser incluído no banco.
A grafia de nome de constraint não tem por obrigação iniciar com PK ou FK, mas isso facilita a identificação do dano na base, onde PK é Primary Key e FK é Foreign Key.
Caso o relacionamento seja feito com chave composta basta somente separar as chaves por vírgula dentro do parentese.
Ex: Considere a existência do campo NomePessoa nas duas tabelas.
alter table tbDependentes add constraint FK_CPF_CNPJ foreign key ([CPF_CNPJ], [NomePessoa]) references tbPessoas([CPF_CNPJ], [NomePessoa]);
0 comentários:
Postar um comentário
É um prazer o Mundo Conecto possuir um leitor assim como você, participativo e que não aceita ser meramente um figurante na vida e acaba exigindo seu lugar como protagonista.