Diseño de tabla, campo Versión.

07/10/2009 - 11:59 por L. Garcia | Informe spam
Hola a todos:

Me gustaría comentar/preguntar como realizar el diseño de una tabla para
diseñar la posibilidad de crear 'versiones' de la información, me explico
mejor:

Supongamos una tabla de información parecida a: GrupoId, ElementoId,
Información

Y me interesa que cuando alguien cambie algún registro, quede registrada la
fecha, el usuario, y el nº de versión automáticamente.

La primera aproximación sería añadir 3 campos: FechaModificacion,
UsuarioModificacion, Version.
Y cuando un usuario cambie un registro, automáticamente se actualicen los
campos, el campo Versión con Version+1.

También podría crearse una tabla 'backup' de la principal, e ir guardando
allí los registros 'antiguos', y el la tabla principal sólo estaría la
última versión.

¿Alguien a necesitado/diseñado algo parecido? Me gustaría compartir pros y
contras, gracias.

Saludos

PD: Perdón por el crossposting, pero al no ser de un tema concreto, lo he
escrito en los grupos en los que suelo participar.

Preguntas similare

Leer las respuestas

#1 José Mª Fueyo
07/10/2009 - 12:39 | Informe spam
Hola
Podrías crear una copia de esa tabla, y en la cual por ejemplo guardaras
también el ID de usuario y la fecha y hora de inserción (puedes por ejemplo
configurar el campo de fecha con el valor predeterminado "Ahora", por
ejemplo).
En las inserción, guardas una copia del registro junto con la fecha en la
tabla de backup. Con cada actualización, actualizas la tabla principal pero
insertas un nuevo registro completo en la de backup. De esta manera tienes un
historial completo de cambios del registro.

Salu2
José Mª Fueyo
[MS MVP Access]
Respuesta Responder a este mensaje
#2 Saga
07/10/2009 - 22:30 | Informe spam
He hecho algo parecido.

La forma mas generica es contar con una rutina que se manda llamar
cada vez que el usuario haga algun cambio. La rutina graba en una tabla
tabla de bitacora la accion que se realizo, las datos involucrados e
informacion administrativa, tal como la fecha y hora de la operacion,
identificacion del usuario que la hizo, nombre del modulo y aplicacion
que realizo el cambio y otros que veas util.

Claro, si la base de datos que estes usando soporta triggers, entonces
puedes usar este mecanismo. Saludos, Saga

"L. Garcia" wrote in message
news:
Hola a todos:

Me gustaría comentar/preguntar como realizar el diseño de una tabla para
diseñar la posibilidad de crear 'versiones' de la información, me explico
mejor:

Supongamos una tabla de información parecida a: GrupoId, ElementoId,
Información

Y me interesa que cuando alguien cambie algún registro, quede registrada
la fecha, el usuario, y el nº de versión automáticamente.

La primera aproximación sería añadir 3 campos: FechaModificacion,
UsuarioModificacion, Version.
Y cuando un usuario cambie un registro, automáticamente se actualicen los
campos, el campo Versión con Version+1.

También podría crearse una tabla 'backup' de la principal, e ir guardando
allí los registros 'antiguos', y el la tabla principal sólo estaría la
última versión.

¿Alguien a necesitado/diseñado algo parecido? Me gustaría compartir pros y
contras, gracias.

Saludos

PD: Perdón por el crossposting, pero al no ser de un tema concreto, lo he
escrito en los grupos en los que suelo participar.

Respuesta Responder a este mensaje
#3 Carlos Sacristan
08/10/2009 - 09:44 | Informe spam
¿Estamos hablando de SQL Server 2008? Porque en ese caso, lo tienes bastante
fácil de implementar con CDC:
http://msdn.microsoft.com/es-es/lib...22489.aspx

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático


"Saga" wrote in message
news:
He hecho algo parecido.

La forma mas generica es contar con una rutina que se manda llamar
cada vez que el usuario haga algun cambio. La rutina graba en una tabla
tabla de bitacora la accion que se realizo, las datos involucrados e
informacion administrativa, tal como la fecha y hora de la operacion,
identificacion del usuario que la hizo, nombre del modulo y aplicacion
que realizo el cambio y otros que veas util.

Claro, si la base de datos que estes usando soporta triggers, entonces
puedes usar este mecanismo. Saludos, Saga

"L. Garcia" wrote in message
news:
Hola a todos:

Me gustaría comentar/preguntar como realizar el diseño de una tabla para
diseñar la posibilidad de crear 'versiones' de la información, me explico
mejor:

Supongamos una tabla de información parecida a: GrupoId, ElementoId,
Información

Y me interesa que cuando alguien cambie algún registro, quede registrada
la fecha, el usuario, y el nº de versión automáticamente.

La primera aproximación sería añadir 3 campos: FechaModificacion,
UsuarioModificacion, Version.
Y cuando un usuario cambie un registro, automáticamente se actualicen los
campos, el campo Versión con Version+1.

También podría crearse una tabla 'backup' de la principal, e ir guardando
allí los registros 'antiguos', y el la tabla principal sólo estaría la
última versión.

¿Alguien a necesitado/diseñado algo parecido? Me gustaría compartir pros
y contras, gracias.

Saludos

PD: Perdón por el crossposting, pero al no ser de un tema concreto, lo he
escrito en los grupos en los que suelo participar.





Respuesta Responder a este mensaje
#4 Alberto Poblacion
08/10/2009 - 10:20 | Informe spam
"Carlos Sacristan" wrote in message
news:eXqFps%
¿Estamos hablando de SQL Server 2008? Porque en ese caso, lo tienes
bastante fácil de implementar con CDC:
http://msdn.microsoft.com/es-es/lib...22489.aspx
[...]
"L. Garcia" wrote> [...]
Y me interesa que cuando alguien cambie algún registro, quede registrada
la fecha, el usuario, y el nº de versión automáticamente.





Con CDC se te graban los datos anteriores y/o nuevos del registro,
además del LSN, a partir del cual se puede obtener la fecha y hora y que
también serviría como número de versión.
Pero para cumplir los requisitos de la pregunta original nos faltaría el
usuario. ¿Hay alguna forma de saber a través de CDC cuál es el usuario que
realizó la modificación?
Respuesta Responder a este mensaje
#5 Carlos Sacristan
08/10/2009 - 10:36 | Informe spam
Directamente no, pero por ejemplo en
http://weblogs.sqlteam.com/derekc/a...60469.aspx explican una
forma de obtenerlo (UPDATE #2)

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático


"Alberto Poblacion" wrote
in message news:uB0D4A$
"Carlos Sacristan" wrote in message
news:eXqFps%
¿Estamos hablando de SQL Server 2008? Porque en ese caso, lo tienes
bastante fácil de implementar con CDC:
http://msdn.microsoft.com/es-es/lib...22489.aspx
[...]
"L. Garcia" wrote> [...]
Y me interesa que cuando alguien cambie algún registro, quede registrada
la fecha, el usuario, y el nº de versión automáticamente.





Con CDC se te graban los datos anteriores y/o nuevos del registro,
además del LSN, a partir del cual se puede obtener la fecha y hora y que
también serviría como número de versión.
Pero para cumplir los requisitos de la pregunta original nos faltaría
el usuario. ¿Hay alguna forma de saber a través de CDC cuál es el usuario
que realizó la modificación?

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida