Eu preciso configurar um recurso de histórico em um projeto para acompanhar as alterações anteriores.
Digamos que eu tenha duas tabelas agora:
NOTES TABLE (id, userid, submissionid, message)
SUBMISSIONS TABLE (id, name, userid, filepath)
Exemplo: Tenho uma linha em notas e o usuário deseja alterar a mensagem. Eu quero manter o controle de seu estado antes da mudança e depois da mudança.
Qual seria a melhor abordagem para configurar uma coluna em cada uma dessas tabelas que dirá se um item é "antigo". 0 se ativo OU 1 se excluído/invisível.
Eu também quero criar uma AUDIT TRAIL
tabela de histórico ( ) que contém o id
estado anterior, id
o novo estado, a qual tabela esses ids se relacionam?
Ao projetar recursos de versão em seus dados, existem vários requisitos mínimos (eu acho):
Aqui estão os slides de uma apresentação que fiz algumas vezes em feiras de tecnologia. Abrange como todos os itens acima podem ser feitos. E aqui está um documento que entra em mais detalhes. Devo pedir desculpas pelo documento - é um trabalho em andamento e nem todas as seções estão concluídas. Mas ele deve fornecer todas as informações necessárias para implementar qualquer coisa, desde simples controle de versão até acesso bitemporal completo.
Por favor veja
http://www.codeproject.com/Articles/105768/Audit-Trail-Tracing-Data-Changes-in-Database
É uma leitura muito boa sobre as abordagens para criar uma trilha de auditoria em seu design de banco de dados. Trilhas de auditoria são necessárias para a implementação de um banco de dados. Você deve sempre poder ver as ações dos usuários do banco de dados dentro do sistema.
Podemos rastrear quais linhas foram alteradas quando em nosso sistema PTA (Point in Time) adicionando algumas colunas PTA (point in time) padrão a todas as tabelas de interesse do PTA.
Sugiro o seguinte: