Yo manejo una tabla llamada "bitacora", esta es la estructura:
Código:
En la columna "ACCION_BITACORA" registro el query ejecutado (update, insert, delete, select) por los usuarios, es decir, registro cada accion del usuario, actualmente NO LO MANEJO con triggers, pero ese es el objetivo al que quiero llegar, utilizar Triggers, pero la situacion que tengo es la siguiente:create table BITACORA ( ID_BITACORA int not null, USUARIO_BITACORA varchar(25) not null, IP_USUARIO varchar(15) not null, FECHA_BITACORA datetime not null, ACCION_BITACORA text not null, primary key (ID_BITACORA) );
La base de datos almacena informacion delicada de personas, como estado civil, genero, enfermedades, estados, etc. la informacion de las personas se actualiza todos los dias, entre los cambios mas frecuentes es el cambio de estado familiar y cambio de la persona a fallecido...
El objetivo propuesto (mision encomendada por el jefe) es saber lo siguiente:
¿Quien hizo el cambio? (el usuario)
¿a qué persona afectó? (persona registrada en el sistema)
¿qué atributo de la base de datos afectó?
¿qué valor tenía antes, y qué valor tiene hoy el registro? (dato antiguo y dato nuevo)
¿cuándo lo hizo?
etc.
Actualmente puedo responder a esas preguntas, pero me tardo alrededor de un día entero en contestarlas por la cantidad de datos que tiene la tabla "baitacora", pues como dije anteriormente, en la columna "ACCION_BITACORA" se almacena el query ejecutado por el usuario.
Mi consulta es la siguiente:
¿cómo puedo mejorar el diseño de la base de datos? para que sea mas eficiente el almacenamiento de las actividades ejecutadas por los usuarios y saber el dato anterior y el dato nuevo que tenía un registro, de ser necesario he pensado hacer una sola tabla con TODOS los atributos de las demas tablas de mi BD, para poder almacenar los datos antiguos alli pero no lo veo muy correcto que digamos.
he leído este articulo:
http://www.nobosti.com/spip.php?article404
y me parece muy bueno, pero necesito mas opiniones para lograr mi cometido.