Hmm, yo también estaba pensando en esto.
- Personalmente, tener una tabla por tabla para mantener las revisiones no sería un gran problema para mí, pero oye.
- El nombre de usuario se puede mantener con variables definidas por el usuario, creo, (después de un inicio de sesión, emita algo como
SET @user='someone'
y úsalo. - Siempre que haya disparadores después de INSERTAR, ACTUALIZAR y ELIMINAR, obtener los valores anterior/siguiente es una consulta simple, solo almacenaré los valores ANTIGUOS.
En resumen, para una tabla con columnas (a,b,c), crearía una tabla con columnas (user_id,modtime,a,b,c).
Principales inconvenientes:
- las actualizaciones por lotes son lentas (así que elija sus tablas para mantener las revisiones con cuidado)
- duplicación de datos de lujo, tendrás/tendré que tener suficiente espacio de almacenamiento
- los datos 'relacionados' no desencadenan una revisión (es decir, alterar un
group_members
la tabla realmente no altera ungroups
tabla, aunque es posible que desee mantener eso como un punto en el tiempo paragroups
en lugar de profundizar engroup_members
alteraciones.
En general, me parece un buen negocio, pero como rara vez lo he visto en la práctica, debe habrá razones convincentes por las que es malo, así que esperaré esas respuestas.