[firebase-br] Chave estrangeira entre tabelas

Eurides Baptistella eurides.baptistella em gmail.com
Dom Dez 11 08:34:24 -03 2011


No meu ponto de vista criaria as tabelas da seguinte maneira:

Create Table "PAIS"  (
    "CD_PAI" Numeric(9,0) NOT NULL,
    "NM_PAI" Varchar(70) NOT NULL,
Constraint "PAIS_PK" Primary Key ("CD_PAI")
);

Create Table "FILHOS"  (
    "CD_FILHO" Numeric(9,0) NOT NULL,
    "CD_PAI" Numeric(9,0) NOT NULL,
    "NM_FILHO" Varchar(70) NOT NULL,
Constraint "FILHOS_PK" Primary Key ("CD_FILHO","CD_PAI")
);

Create Table "NETOS"  (
    "CD_FILHO" Numeric(9,0) NOT NULL,
    "CD_PAI" Numeric(9,0) NOT NULL,
    "NM_NETO" Varchar(70) NOT NULL,
Constraint "NETOS_PK" Primary Key ("CD_FILHO","CD_PAI")
);


Alter Table "FILHOS" add Constraint "PAIS_FILHOS_FK" Foreign Key ("CD_PAI")
references "PAIS" ("CD_PAI") on update cascade on delete cascade ;
Alter Table "NETOS" add Constraint "FILHOS_NETOS_FK" Foreign Key
("CD_FILHO","CD_PAI") references "FILHOS" ("CD_FILHO","CD_PAI") on update
cascade on delete cascade ;


Dessa forma quando quiser saber quantos netos um pai tem não será
necessário realizar join com filhos haja visto que o código do pai (no caso
avô) já se encontra na tabela de netos.

Além de outras vantagens que essa normalização apresenta....


Em 10 de dezembro de 2011 20:47, Hélio Oliveira <hpensador em gmail.com>escreveu:

> Boa noite Alysson!
>
>
>  Suponha que tenha as tabelas Pai, Filho e Neto.
>> Naturalmente, criamos FK para as tabelas Pai x Filho e Filho x Neto.
>> Ai entra a questão... criar uma FK entre Pai x Neto é bom, ruim ou
>> indiferente?
>>
>
> Sua ideia em colocar uma FK entre a tabela NETO e PAI, creio que seja a de
> saber a relação entre as partes, porém, como você já terá referida FK entre
> o PAI x FILHO, isto não se faz + necessário.
>
> Logo isto ao meu ver é uma redundância.
>
> Espero ter te ajudado!
>
>
> --
> []'s,
>
> Hélio Oliveira
> Bel. Ciência da Computação
> Técnico em Contabilidade
> e-mail : hpensador em gmail.com
> Skype : hpensador
> http://hpensador.blogspot.com/
> www.hpensador.net
> (71) 9975-9176
>
>
>
> ______________________________**________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/**artigo.php?id=1107<http://www.firebase.com.br/fb/artigo.php?id=1107>
> Para consultar mensagens antigas: http://firebase.com.br/**pesquisa<http://firebase.com.br/pesquisa>
>



-- 

*--
Eurides V. Baptistella
**E-mail:* eurides.baptistella em gmail.com
*Fone:* +55 (49) 9125-6572



Mais detalhes sobre a lista de discussão lista