Pregunta

Estoy creando una tabla de auditoría para el seguimiento de los cambios realizados en un registro de la tabla principal.

Aquí tabla de auditoría es el duplicado exacto de la tabla principal (por ejemplo tabla de empleados), pero sólo tendrá inserciones '' por cada cambio que ocurre en la mesa principal. Por lo que tendrá duplicados (EmployeeIDs mismos), por lo que debo añadir Audit_ID separado para cada entrada?

¿Fue útil?

Solución

seguro de que necesita algún tipo de clave principal de la tabla.

Será más fácil para eliminar duplicados y para realizar un seguimiento de la 'razón de inserción' (para fines de depuración) si tiene uno.

de (como RDBMS con MySQL) Algunos InnoDB realidad crear una clave principal escondido para ti si no lo hace de forma explícita, por lo que sólo lo hace usted mismo y hacer si es visible y utilizable.

Otros consejos

Más o menos, Tienes a, ya que mientras que el de empleado en Empleado será única (una actualización no añadirá una nueva fila, basta con modificar la fila existente), la tabla de auditoría tendrá varias filas con la misma EmployeeId (uno para la inserción inicial, uno para cada actualización posterior, de ese empleado).

Además, las entidades de los empleados son empleados. Sin embargo, las entidades de auditoría son los registros de auditoría. Ellos shoulld tienen su propio ID.

Usted querrá esto si alguna vez algo va mal y que necesita para actualizar realidad o eliminar un registro de auditoría. En efecto, si se inserta un empleado, a continuación, se actualiza el valor de una columna, luego se actualiza de nuevo para ser el valor original, ahora tiene dos registros idénticos en auditoría. Los cuales tendrían que ser eliminados o actualizados juntos (menos que haya utilizado una cláusula en su límite de actualizar o suprimir.) Sucio.

Lo que también señala la utilidad de la adición de una marca de tiempo a la tabla de auditoría también. Pero no creo que se debe utilizar y que employeeid como una clave compuesta. En primer lugar, las claves compuestas chupan. En segundo lugar, es muy posible granularidad de una marca de tiempo es menor que el tiempo que llevaría el sistema a realizar dos cambios (dos actualizaciones del mismo empleado, como en, digamos, una operación por lotes). (A fecha y hora de Sybase tiene una granularidad de tres milisegundos;. Un procesador Intel Core 2 Extreme puede hacer casi 200 millones instrucciones en ese momento)

Sí. Creo que una clave principal no semántico en cada mesa es una buena práctica, ya que permite hacer referencia a ella de una manera pragmática. Puede visualizar "los cambios de audit-id a audit-id+1" mucho más fácilmente que el uso de fechas.

Se puede utilizar el ID de empleado y la fecha y hora de auditoría como una clave compuesta ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top