Autor Tema: Histórico de cambios en registros  (Leído 3857 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Jeronimo

  • Gigabyte
  • ****
  • Mensajes: 402
  • Reputación: +33/-2
    • Ver Perfil
Histórico de cambios en registros
« en: Julio 31, 2013, 09:28:11 am »
¡Hola!
Debo diseñar en una base de datos todo lo necesario para que se puedan ver los cambios hechos en los distintos registros, sin limitación por fecha (es decir, que se registren todos los cambios hechos durante la vida útil del programa). ¿Cuál es la  mejor manera de hacerlo?
En principio pensé en crear una tabla "registrocambios" con los campos "id", "fecha", "hora", "id_usuario", "tabla", "id_registro", "campo", "valor anterior", "valor nuevo". Pero luego me encontré con que a lo mejor hay casos donde se modifican registros de varias tablas en el mismo proceso. Por ejemplo, en un sistema de ventas, si se modifica un pedido debieran registrarse los cambios realizados en el maestro (fecha, cliente, etc.) y en el detalle (artículos, cantidades, precios, etc.). En ese caso me parece que sería muy engorroso hacerlo como lo describí.
¿Qué se les ocurre? ¿O qué han hecho ustedes en casos así?
¡Muchas gracias!

Jerónimo

lucius

  • Gigabyte
  • ****
  • Mensajes: 263
  • Reputación: +6/-5
    • Ver Perfil
Re:Histórico de cambios en registros
« Respuesta #1 en: Agosto 12, 2013, 08:06:59 pm »
Hace tiempo me plantie si se podia hacer lo que mencionas pero me di cuenta de que seria demasiado trabajoso igual encontre que en el caso de sqlserver todas las modificaciones a bd se graban en el log y si esto ya lo hacer el motor porque hacerlo manualmente, bueno te dejo estos link en caso no hayas escuchado sobre el log de sqlserver
http://www.programacion.com/articulo/reducir_el_fichero_de_log_en_sql_server_269
http://www.guillesql.es/Articulos/SQLServerFAQ_Leer_Log_fn_dblog_DBCC_Log.aspx

ssccaann43

  • Moderador
  • Terabyte
  • *****
  • Mensajes: 970
  • Reputación: +97/-58
    • Ver Perfil
    • Sistemas Nuñez, Consultores y Soporte, C.A.
Re:Histórico de cambios en registros
« Respuesta #2 en: Agosto 13, 2013, 06:51:03 pm »
¡Hola!
Debo diseñar en una base de datos todo lo necesario para que se puedan ver los cambios hechos en los distintos registros, sin limitación por fecha (es decir, que se registren todos los cambios hechos durante la vida útil del programa). ¿Cuál es la  mejor manera de hacerlo?
En principio pensé en crear una tabla "registrocambios" con los campos "id", "fecha", "hora", "id_usuario", "tabla", "id_registro", "campo", "valor anterior", "valor nuevo". Pero luego me encontré con que a lo mejor hay casos donde se modifican registros de varias tablas en el mismo proceso. Por ejemplo, en un sistema de ventas, si se modifica un pedido debieran registrarse los cambios realizados en el maestro (fecha, cliente, etc.) y en el detalle (artículos, cantidades, precios, etc.). En ese caso me parece que sería muy engorroso hacerlo como lo describí.
¿Qué se les ocurre? ¿O qué han hecho ustedes en casos así?
¡Muchas gracias!

Jerónimo


Si lo que deseas es un Modulo de Tracking, pues simple... Te armas una tabla y registras todos los movimientos del usuario, mas no a que tabla afecto, porque no tiene sentido...

Por ejemplo:

Tabla_Tracking
ID <- Autoincrementable
IDUsuario
Modulo
Accion
Observacion
Fecha
Hora
Estacion

Entonces registras el id del usuario, el modulo donde acceso por ejemplo FACTURACION, ya que realizo una venta, en Accion colocas REGISTRO DE VENTA, Observación: EL USUARIO FULANO REGISTRO UNA VENTA AL CLIENTE FULANITO POR UN MONTO DE XXX.. NRO FACTURA XXXXX.... Registras la Fecha, La hora y la Estación desde donde este se loggeo para tal fin...! Esto por lo general lo realizan para auditar todo lo que los usuarios realizan...

Saludos
Miguel Núñez.

Jeronimo

  • Gigabyte
  • ****
  • Mensajes: 402
  • Reputación: +33/-2
    • Ver Perfil
Re:Histórico de cambios en registros
« Respuesta #3 en: Agosto 26, 2013, 01:07:07 pm »
Algo de eso había pensado. No sé por qué quería hacerlo de manera de poder tomar los registros del tracking para volver el estado de un cliente, etc., a los valores anteriores.
Ahora que lo pienso como vos lo planteás, es cierto, no tiene mucho sentido, de manera que lo que sugerís es la manera que mejor encuentro para poder tener el histórico que necesito.
Perdón por la demora en la respuesta.
¡Muchas gracias!

Jerónimo