He usado con mucho éxito un modelo en el que cada tabla tiene una copia de auditoría:la misma tabla con algunos campos adicionales (marca de tiempo, identificación de usuario, tipo de operación) y 3 disparadores en la primera tabla para insertar/actualizar/eliminar.
Creo que esta es una muy buena manera de manejar esto, porque las tablas y los activadores se pueden generar a partir de un modelo y hay poca sobrecarga desde una perspectiva de administración. La aplicación puede usar las tablas para mostrar un historial de auditoría al usuario (leer -solo).