Pular para o conteúdo principal

Histórico temporal

Todo registro de negócio guarda seu histórico completo de mudanças. Cada versão é delimitada pelo período em que foi verdadeira, então é possível reconstruir qualquer registro como ele estava em qualquer momento passado.

Por que existe

Dados mestres alimentam decisões, e decisões são questionadas depois. "Qual endereço tínhamos quando aquele extrato foi emitido?" só tem resposta se o valor antigo ainda existir.

Sobrescrever no lugar torna isso irrespondível. Guardar o histórico torna rotineiro.

As garantias

Duas propriedades valem por construção, aplicadas pelo banco de dados e não por convenção:

  • Sem lacunas. Todo instante desde a criação do registro é coberto por exatamente uma versão.
  • Sem sobreposições. Duas versões do mesmo registro nunca reivindicam o mesmo instante.

Juntas, elas significam que uma pergunta sobre um ponto no tempo tem sempre exatamente uma resposta. Não zero, não duas.

Histórico versus auditoria

Duas coisas diferentes, facilmente confundidas:

RespondeFormato
Histórico temporalComo este registro era naquele momento?Versões de um registro
Log de auditoriaQuem mudou isto, e quando?Eventos somente-adição

O histórico reconstrói um estado; o log de auditoria investiga uma ação. Normalmente você quer os dois: o histórico diz que o endereço estava errado, a auditoria diz quem o mudou e quando.

Vigência de relacionamentos

Relacionamentos carregam seu próprio período de vigência, então um vínculo que termina é encerrado, não excluído. Quando um fato muda — um ativo vendido, um vínculo empregatício encerrado — a janela anterior fecha e uma nova abre.

Perguntar quem era o proprietário de um ativo em março passado devolve o proprietário daquela data, não o atual.

Cargas iniciais

A primeira carga em massa numa organização nova pode dispensar o histórico, já que não há estado anterior a preservar. Um registro carregado assim começa seu histórico na primeira mudança real.

Esta é uma opção deliberada apenas para a carga inicial. Usá-la em operação contínua descarta exatamente o histórico que você vai querer depois.

A seguir


Última verificação no commit d3c2586b (2026-08-03)