Olá pessoal,
Estou projetando um banco dados e como não sou nenhum DBA fiquei com dúvida ao projetar uma situação onde será preciso guardar uma versão do registro que foi alterado para posterior verificação ou recuperação do dado. Veja o que pensei:
-
Criar um tabela nova (TabelaVersao), identica a primeira com uma chave estrangeira para fazer o relacionamento com a tabela com os dados atuais (TabelaOriginal). Entao quando houver alguma modificação na tupla da TabelaOriginal transfiro a tupla inteiro para a TabelaVersao.
Pior que desse jeito, se alterar apenas um atributo (por exemplo um atributo data) será gerado uma versao de todos os outros atributos da tupla. Assim teremos um enorme quantidade de dado repetido. Essa tabela pode ter ate 15 atributos e repetir 14 por causa de 1 me parece estranho;
-
Pensei em criar uma TabelaVersao onde so guardasse o valor alterado. Mas dai os tipos dos atributos são de diferentes formatos além do que se eu guardar apenas o registro alterado não imagino como poderia mostrar os dados para o usuário sem fazer muitos malabarismo pelo codigo.
O que vocês acham sobre este caso?
Cara, trabalhei em um versionamento onde nossa solucao eh semelhante à sua! Nao tem jeito, alteracao de um campo significa nova versao, pois o cliente fatalmente irá requisitar um acompanhamento das versoes e nesse momento ele vai fazer algumas perguntas, tais como : por que um dado campo sofreu mais alteracoes do que outro? a partir de que momento esse campo sofreu alteracao? Resumindo, creio que voce esteja na direcao certa!
Ate mais
vai ter que usar Java?
O Rails tem plugin pronto pra isso(acts_as_versioned)
[quote=Vini Fernandes] Cara, trabalhei em um versionamento onde nossa solucao eh semelhante à sua! Nao tem jeito, alteracao de um campo significa nova versao, pois o cliente fatalmente irá requisitar um acompanhamento das versoes e nesse momento ele vai fazer algumas perguntas, tais como : por que um dado campo sofreu mais alteracoes do que outro? a partir de que momento esse campo sofreu alteracao? Resumindo, creio que voce esteja na direcao certa!
Ate mais[/quote]
A nem, pior que to achando pessimo isso. Em uma das tabela será uma especie de editor de texto, e tem uns 5 campo text que o usuario pode ficar horas em um registro dela salvando inumeras vezes. Eu peguei um outro sistema que tempos que essa parte é muito parecida, para cada registro existe 30 versões em média.
[quote=raf4ever]vai ter que usar Java?
O Rails tem plugin pronto pra isso(acts_as_versioned)[/quote]
Pior que tem, ninguem da equipe conhece Rails, então fica enviável!
Bom, ate o momento eu nao exergo outra solucao, mas se voce encontrar outra abordagem me escreva. Gostaria de saber, já que essa situacao apareceu duas vezes em minha vida…rsrs!!!
Valeuuu