Para un proyecto en el que estoy trabajando, se me ha pedido que cree una pista de auditoría de todos los cambios que se hayan realizado en los registros. Esta es la primera vez que tengo que crear una pista de auditoría, así que he estado investigando mucho sobre el tema.¿Cómo utilizaría un seguimiento de auditoría para mostrar qué campos se han editado alguna vez?
La aplicación se desarrollará en PHP/MSSQL, y será de poco tráfico.
Según he leído, he decidido tener una tabla de auditoría y usar activadores para registrar los cambios en la tabla.
Los dos requisitos para su visualización en la aplicación son los siguientes:
podrá ver un registro de todos los cambios realizados en un campo (yo más o menos sé cómo hacer esto)
Poder ver, al ver un registro en la aplicación, un indicador al lado de cualquier campo en el registro que haya sido modificado (y posiblemente otra información como la fecha del último cambio).
El artículo n. ° 2 es el que actualmente me está causando dolor. Sin hacer una consulta separada para cada campo (o una consulta anidada muy larga que tardará años en ejecutarse), ¿alguien tiene sugerencias para una forma óptima de hacerlo? (He pensado en agregar un campo adicional "ModifiedFlag" para cada campo de la tabla, que actuará como indicador booleano si el campo alguna vez se ha editado, pero eso parece una gran sobrecarga.
Para la 'recuperación fácil' de los campos que se cambian, ¿podría crear un activador que almacenara el registro inicial en la creación tanto en la tabla principal como en una tabla de 'originales' separada? Luego, para mostrar, ¿podría recuperar el registro de ambas tablas ("principal" y "originales") y compararlas en el código para marcar los campos apropiados? – Kirsehn
Eso es posible, pero luego tendría dos tablas para cada cosa que desea almacenar, y solo puede ver que un número de campos ha cambiado desde que se creó el registro. La solución mencionada en mi respuesta le permite crear una pista de auditoría detallada que puede mostrar qué campos han cambiado con el tiempo y qué valores tienen esos campos. En otras palabras, construyes un historial. Además, no tiene que crear dos tablas para todo, solo las tablas "principales" y el encabezado del seguimiento de auditoría y la tabla de elementos – dwergkees
Tiene sentido. Probablemente no me aclare mi opinión en mi primer comentario. Quería decir que además del método que sugirió anteriormente (con el que estoy de acuerdo), cree también una tabla separada para almacenar el registro original. Esto me permitiría, creo, una recuperación mucho más sencilla de una lista simple de campos que se modificaron (para marcar los campos como cambiados), en lugar de tratar de recuperarla a partir de la pista de auditoría. Todavía usaría el camino para mostrar detalles de todos los cambios. – Kirsehn