[firebase-br] Integridade referencial

Gladiston Santana gladiston em vidy.com.br
Quarta Julho 29 16:22:30 -03 2020


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.


Mais detalhes sobre a lista de discussão lista