Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Alteração de registros vigenciados

Entendi que um registro pode ter uma "data de vigência" que de tempos em tempos verifica e o atualiza caso necessário. No caso do exemplo dado na aula, se eu fizer a alteração em um registro (id 3), ele termina a vigência no dia 25/06/2023 tendo o novo registro validade a partir de 26/06/2023. Minha dúvida é: considerando que eles tem chaves primárias diferentes, como garantir que os joins vão considerar a chave correta (6, que é a nova) se já tenho uma relação criada?

2 respostas
solução!

Ei, Estudante! Tudo bem?

Uma sugestão é incluir a lógica de data de vigência no seu join. Ou seja, adicione a verificação de se a data da transação (ou a data de referência da consulta) está dentro do intervalo de validade do registro da dimensão.

Um exemplo:

JOIN dim_cliente dc ON fato.id_cliente = dc.id 
AND fato.data_transacao BETWEEN dc.data_inicial AND dc.data_final

Nesse código pode garantir que apenas o registro ativo (ou válido) na data da transação será retornado, evitando ambiguidades entre chaves primárias diferentes (como id 3 e id 6). E caso queira otimizar, use os índices das colunas de datas para melhorar o desempenho.

Conteúdos relacionados

Este conteúdo pode abrir em inglês e se preferir ler em português, recomendo que utilize o tradutor automático do navegador.

Continue se dedicando aos estudos e qualquer dúvida, compartilhe no fórum.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado!

Excelente, obrigado Nathalia!