[firebase-br] Chave estrangeira entre tabelas

Alysson Gonçalves de Azevedo agalysson em gmail.com
Seg Dez 12 16:52:08 -03 2011


Primeiramente, obrigado pelas respostas e perdoem-me pela demora pra
responder.

Bem, era isso mesmo que eu imaginava.

Enquanto estava fazendo o MER do projeto, eu fiz esse relacionamento pai x
neto, sem perceber mesmo, depois, ao criar as tabelas no firebird, percebi
que era redundante...

É que assim, esse meu exemplo (pai x filho x neto) é bem simplista e nele
fica claro que não é necessário, mas no meu caso aqui, tava um pouco mais
escondido, e eu só percebi ao checar os índices e dependências..

De início eu imaginei que era dispensável a fk, mas por vias das dúvidas eu
perguntei, vai que alguém tivesse algo que me fizesse mudar de ideia.

Obrigado a todos pelos conselhos.

Alysson Gonçalves de Azevedo
(11) 8491-7730



Em 12 de dezembro de 2011 09:51, Edson Marco <edmafer em gmail.com> escreveu:

> Completando o que Daniel disse...
>
> Quando se tem tabelas com muitos registros (entenda por muitos MILHÕES de
> registros, 500 ou 600 mil são poucos registros) e há muitas consultas sobre
> estas tabelas, pode sim furar esta regra, e criar o relacionamento direto
> ao neto quando a consulta não depende do filho. Isto vai te dar um ganho de
> desempenho considerável na consulta, mas vai aumentar a carga na
> inserção/update pois tem mais campos e mais um índice para ser atualizado.
>
> Quanto ao cascade tome cuidade, é muito bom, mas causa muito erro. A regra
> básica é a seguinte: Se o registro da tabela B só pode existir se houver
> registro na Tabela A então pode haver cascade.
>
> Mas se por algum motivo você decidir relacionar B com outra tabela, ou
> outra tabela relacionar com B, desative o cascade ou você vai ter sérios
> problemas de consistência na sua base.
>
> No seu caso se tu fizer cascade para filho e neto, tenha em mente que estes
> registros serão eliminados junto com o registro pai. Se você relacionar
> qualquer um deles com outra tabela, ou outra tabela relacionar eles você
> irá ter alguns problemas.
>
> []'s
>
> 2011/12/12 Tecnobyte Informática <temp2 em tecnobyte.com.br>
>
> > Olá Alysson
> >
> > A menos que você tenha razões suficientemente claras e bem fundamentadas,
> > não vejo sentido em criar a relação PAI x NETO, visto que isto pode ser
> > obtido com Pai x Filho e Filho x Neto. Alguém poderá dizer que fazendo a
> > relação Pai x Neto diretamente você poderia dispensar um JOIN entre
> Filho e
> > Neto para obter a relação Pai x Neto, mas ainda não vejo isto como razão
> > suficiente para "desnormalizar" seu banco de dados.
> >
> > Atenciosamente.
> >
> > Daniel P. Guimarães
> > Tecnobyte Informática
> > www.tecnobyte.com.br
> >
> > -----Mensagem Original----- From: Alysson Gonçalves de Azevedo
> > Sent: Saturday, December 10, 2011 5:17 PM
> > To: FireBase
> > Subject: [firebase-br] Chave estrangeira entre tabelas
> >
> > Saudações a todos!
> >
> > Depois de um longo tempo sem programar, estamos aqui novamente... ^^
> >
> > Pessoal, to com a seguinte duvida.
> >
> > 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?
> >
> > E se essas fk estiverem como cascade, ocorreria algum erro?
> >
> > Por enquanto é isso, valeu.
> >
> > Alysson Gonçalves de Azevedo
> > (11) 8491-7730
> >
> > ______________________________**________________
> > 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>
> >
>
>
>
> --
> /*
>  * Edson Marco Ferrari Junior
>  * edmafer em edmafer.com.br
>  * http://www.edmafer.com.br
>  */
> ______________________________________________
> 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
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista