[firebase-br] chave estrangeira

Toninho Eleotério toninhoeleoterio em gmail.com
Sáb Mar 4 08:44:19 -03 2017


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 dá
> 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
>



Mais detalhes sobre a lista de discussão lista