[firebase-br] chave estrangeira

Rodrigo Arcoverde rodrigo.arcoverde em gmail.com
Sáb Mar 4 11:22:20 -03 2017


"Com relação a apenas uma parte dos campos serem não nulos, acredito que
deveria ocorrer um erro, uma vez que a ideia da integridade é a atomicidade
das informações, no caso a chave composta inteira."

Antônio, obrigado pelo retorno. O problema é que o banco não está dando
erro com parte dos campos sendo nulos. Achei isso muito esquisito...

Em 4 de março de 2017 08:44, Toninho Eleotério <toninhoeleoterio em gmail.com>
escreveu:

> Oi Rodrigo.
> Bom dia
> Tdo bem?
>
> Não sou especialista em firebird, o que tenho é uma experiência de uso ao
> longo dos anos.
> Trabalho ainda com chave estrangeira composta, não sei se o uso é
> incentivado ainda nos anos mais atuais, o que tenho ouvido falar é sobre
> chave cega, mas vamos ao seu problema.
>
> Usando chave composta o que se espera é exatamente o que vc quer, assim: (e
> tenham liberdade para me corrigir, por favor, como disse não sou
> especialista)
>
> Vamos dar um exemplo em linguagem Normal, portugues:
> Tabela  N- Notas com a seguinte chave primaria
> Chave Primaria(CodigoAluno, CodigoAno, Turno, Serie, Turma,
> CodigoCategoria)
> Chave Estrangeira de N para E(CodigoAluno, CodigoAno, Turno, Serie, Turma,
> CodigoCategoria)
>
> Tabela E - Matriculados
> CodigoAluno, CodigoAno, Turno, Serie, Turma, CodigoCategoria,
> NumAlunoNaTurma
> Chave Primaria(CodigoAluno, CodigoAno, Turno, Serie, Turma,
> CodigoCategoria) e veja que NumAlunoNaTurma não faz parte da chave pois
> poderá mudar ao longo do ano letivo.
>
> Então vamos nós.
> Se tentar inserir um registro em N, com valores para os campos que não
> existem em E, é lançado um erro, garantindo a integridade referencial .
> Se eu tentar inserir um valor nulo, só vai aceitar se no meu banco eu
> estiver permitindo valores nulos, mas como os campos são para chave
> estrangeira, normalmente o banco não aceita nulos.
>
> Com relação a apenas uma parte dos campos serem não nulos, acredito que
> deveria ocorrer um erro, uma vez que a ideia da integridade é a atomicidade
> das informações, no caso a chave composta inteira.
>
> Não sei se te ajudei muito.
> Qualquer dúvida manda aí ok?
>
>
>
>
>
>
> Bom dia
> Tudo bem?
>
>
>
> Favor confirmar recebimento deste email.
>
> Atenciosamente,
> Antonio Marcos Eleotério da Silva
>
> Telefones: (32) 3222-5695
>                 (32) 9 8856-3706
>
>
> Em 3 de março de 2017 09:55, Rodrigo Arcoverde <
> rodrigo.arcoverde em gmail.com>
> escreveu:
>
> > Pessoal, bom dia.
> >
> > Estou com uma dúvida com relação a criação de chaves estrangeiras
> > compostas. Me ocorre que uma chave estrangeira serve para garantir que um
> > determinado conjunto de campos da tabela A possui uma correspondência
> exata
> > em uma chave primária (neste caso composta) na tabela B. Se todos os
> campos
> > da chave estrangeira na tabela A são não nulos, a verificação é feita na
> > chave primária da tabela B. Se todos os campos da chave estrangeira da
> > tabela A são nulos, não ocorre erro, pois não há a necessidade de
> validação
> > da integridade referencial. No entanto, se apenas uma parte dos campos da
> > chave estrangeira na tabela A for não nulo, como isso funciona no
> firebird
> > 2.5 e no 3.0? Estava validando um código para alterar o metadado de um
> > banco e poderia jurar que isso não ia funcionar, mas está rodando e não
>> > erro de validação da chave estrangeira nesta situação. Gostaria de
> entender
> > melhor este processo para manter a chave estrangeira como proposto pela
> > minha equipe ou se tratamos isso nas triggers. Obrigado.
> >
> > Att,
> > Rodrigo Arcoverde
> > ______________________________________________
> > 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://www.firebase.com.br/
> > pesquisa_lista.html
> >
> ______________________________________________
> 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://www.firebase.com.br/
> pesquisa_lista.html
>



Mais detalhes sobre a lista de discussão lista