[firebase-br] Integridade referencial

Gustavo Novaes gutonovaes19 em gmail.com
Quarta Julho 29 16:59:11 -03 2020


Perfeito, Éder, Gladiston,

Já tava dando andamento aqui nos IR.

Acho que restou uma dúvida: no meu modelo de dados há uma tabela de
endereços (catálgo de endereços) que serve tanto para a tabela de empresas
como filial. Isso pois, nos "primórdios" desse sistema não era relevante
essa informação (endereço) e, para não avolumar o banco , optei por esse
modelo.
Tenho então:

   - tabela empresa, campo incremental CODENDERECO único
   - tabela filial, campo incremental CODENDERECO unico

A implementação desses campos, no paradox era autoinc. No FB inicialmente
seria com triggers mas estou tentando outro modelo.

A questão é, tabela de endereços, tem como chave primaria:


   - Codigo (inteiro) -----> que pode vir de EMPRESA ou de FILIAL
   (codendereco)
   - Identificador da Relação (Identificador) ----> que irá conter a
   palavra  EMPRESA ou FILIAL.

Acredito que não possa ser definido ou não deva ser, 2 FK na tabela de
endereço em relação a Empresa e Filial, certo?
Esse controle parece-me terá que ser nas triggers ou tem outra forma?
Pensei, inclusive, mudar o modelo, acabar com essa tabela de endereços e
adicionar os campos na EMPRESA e FILIAL.

O que sugerem? Aceito criticas.  Abraço.




*Gustavo Novaes *




Em qua., 29 de jul. de 2020 às 16:24, Gladiston Santana <
gladiston em vidy.com.br> escreveu:

> Integridade Referencial(IR) é apenas o enlace de chaves entre tabelas para
> manter a coesão dos dados e evitar registros órfãos, uma vez definida, o
> banco de dados cuidará do resto.
> Fazer Integridade referencial por triggers não é IR é apenas uma regra que
> supostamente a simula, mas fazer isso é dor de cabeça porque as
> dependências teriam uma ordem certa para serem excluídas então dar
> manutenção nesse negócio depois de algum tempo deverá ser um inferno.
> Se você quer manter a coesão dos dados, não pense em triggers, pense em IR.
> As vezes você não quer IR  para coisas simples como uma tabela de estados e
> também porque o seu cadastro deveria permitir um valor que indique
> indefinido e fazer IR teria que cadastrar as opções indefinidas também,
> nessa situação você pode usar um domain:
> CREATE DOMAIN D_END_UF AS
> CHAR(2) CHARACTER SET WIN1252
> DEFAULT '*'
> NOT NULL
> CHECK ((VALUE='*') OR
>        (EXISTS(SELECT * FROM TABELA_UF WHERE UF=VALUE)))
> COLLATE WIN_PTBR;
>
> Esse domain/tipo aceitaria '*' como estado indefinido ou então um valor
> dentro de TABELA_UF, mas não aceitaria outra exceção.
> Tabelas pequenas você pode fazer esse pequeno ajuste, as vezes nem precisa
> de tabela se ela for muito pequena, ex:
>
> CREATE DOMAIN D_SEXO AS
> CHAR(1) CHARACTER SET WIN1252
> DEFAULT 'M'
> NOT NULL
> CHECK (VALUE IN ('M', 'F','I'))
> COLLATE WIN_PTBR;
>
> inte+
>
> Em qua., 29 de jul. de 2020 às 09:30, Gustavo Novaes <
> gutonovaes19 em gmail.com>
> escreveu:
>
> > Bom dia,
> > Li um artigo no site firebase com considerações sobre a integridade
> > referencial declarativa x triggers.
> > Tenho registros PAI que não podem ser excluídos caso tenha registros
> filhos
> > e alguns casos de exclusão em cascata.
> > Exemplo: Empresa, filial, empregado, "informações sobre o empregado".
> > Posso excluir do banco empresas e filiais que não tenham nenhum empregado
> > relacionado.
> > Se excluir um empregado, devo excluir seu histórico.
> > Fazia esse controle via código no DELPHI com o paradox.
> > Na migração , gerei o script sem os FK (não existiam no paradox).
> > Agora seria o momento de decidir manter como era ou:
> > - criar FK com exclusão em cascata
> > - criar triggers que verificam e impedem excluir um empregado que tenha
> > históricos (históricos considere mais de uma tabela com propósitos
> > diferentes).
> >
> >
> >
> > *Gustavo Novaes *
> > ______________________________________________
> > 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
> >
>
>
> --
> A Vidy possui um Sistema de Gestão da Qualidade estruturado e com
> Certificação ISO 9001 há mais de 10 anos, mantendo seu foco na Qualidade e
> na Melhoria Continua.
>
> Em março de2018 migramos com sucesso para a nova versão da ISO 9001.
>
> Somos a única Empresa Brasileira de Engenharia de Laboratórios com
> certificação com o Escopo Completo; desde Projetos, Engenharia, Construção,
> Fabricação e Instalação de Laboratórios.
> ______________________________________________
> 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