GuilleSQL :: Microsoft SQL Server, SSIS, y más !! Votar en los Premios Bitacoras.com a Portal GuilleSQL

El Versionado (Fecha Desde y Fecha Hasta) y otras Fechas relacionadas (Fecha Alta, Fecha Baja, Fecha Creación o Timestamp, etc.)

Volver a: [Trabajar con tablas versionadas (Fecha Desde y Fecha Hasta) en SQL Server, Slowly Changing Dimension (SCD) Tipo 2]


En este capítulo se describen otros campos de tipo Fecha también relacionados con el Versionado (Fecha Desde y Fecha Hasta) que muy habitualmente nos encontraremos en tablas versionadas: Fecha Hora de Creación (Timestamp), Fecha Hora de Actualización, Fecha Alta y Fecha Baja, son quizás los campos de tipo Fecha que más habitualmente nos podremos encontrar en tablas versionadas. Su conocimiento y comprensión son vitales, debido a que pueden afectar al desarrollo de consultas SQL sobre tablas versionadas, en función de cuál sea el dato que deseemos obtener, y qué campos posea la tabla versionada.

Los campos Fecha Desde y Fecha Hasta no tienen por qué ser los únicos campos de tipo Fecha en nuestras tablas. De hecho, podemos encontrarnos con bastante frecuencia otros campos de tipo Fecha también relacionados con el Versionado (Fecha Desde y Fecha Hasta) de tablas. A continuación se explican algunos de estos campos Fecha auxiliares a los propios del versionado (Fecha Desde y Fecha Hasta):

  • Fecha Hora de Creación (Timestamp). Un campo que almacene la Fecha Hora de Creación de un registro en la tabla, ofrece varias ventajas. Por ejemplo, si deseamos crear un índice único, podríamos generarlo utilizando la composición de la Clave de Negocio (Business Key) y la Fecha Hora de Creación (Timestamp) del registro. Del mismo modo, con fines de auditoría, nos permitiría conocer el momento en el tiempo exacto de la creación del registro, ya que Fecha Desde (en el Modelo de Versionado propuesto en este Artículo) sólo almacena la Fecha, sin la información horaria, lo cual resulta impreciso. Además, Fecha Desde podría no ser representativo de la Fecha Hora de Creación, ya que en determinados casos puede ser interesante crear un registro con Fecha Desde anterior a la Fecha Actual para conseguir un efecto retroactivo o eventualmente para corregir datos (igualmente que podría ser interesante crear Fecha Desde posterior a la Fecha Actual).
  • Fecha Hora de Actualización. Un campo que almacene la Fecha Hora de Actualización de un registro en la tabla, puede resultar de utilidad para aquellos cambios que no generen una nueva versión, de tal modo, que junto a la Fecha Hora de Creación, podamos conocer si en una determinada Versión se han producido cambios desde su creación (es decir, si la Fecha Hora de Actualización es mayor que la Fecha Hora de Creación).
  • Fecha Alta y Fecha Baja. Los campos Fecha Alta y Fecha Baja permiten definir para una versión determinada, el periodo de vigencia de la misma. Son de gran utilidad, ya que en la mayoría de los casos, se toma como premisa que NO se eliminan los datos de las tablas, en su lugar se establece la Fecha de Baja .Tomando el ejemplo de una tabla de Usuarios, podría darse el caso de:

    • Crear un Usuario el día 01/01/2008, con Fecha Desde = 01/01/2008, Fecha Alta = 01/01/2008, Fecha Hasta = 31/12/9999 y Fecha Baja = 31/12/9999.
    • Posteriormente, el día 01/06/2008 se decide dar de baja el usuario. Por ello, se actualiza la versión actual con Fecha Hasta = 01/06/2008, y se genera una nueva versión Fecha Desde = 01/06/2008, Fecha Alta = 01/01/2008, Fecha Hasta = 31/12/9999 y Fecha Baja = 01/06/2008.

    Este comportamiento es muy versátil, ya que funcionalmente permite muchas posibilidades. Por ejemplo, ¿Y si se necesita volver a dar de alta al mismo usuario el 01/09/2008? Pues muy fácil, tan sólo es necesario actualizar la versión actual con Fecha Hasta = 01/09/2008, y generar una nueva versión Fecha Desde = 01/09/2008, Fecha Alta = 01/09/2008, Fecha Hasta = 31/12/9999 y Fecha Baja = 31/12/9999.

    Es muy interesante el detalle de que en ningún momento se pierde información. En el ejemplo descrito, comprobando las diferentes versiones, podríamos ver claramente que desde el 01/06/2008 al 01/09/2008 el usuario ha estado dado de baja.

    Además, también sería posible dar de alta un Usuario con Fecha Alta posterior a Fecha Desde, por ejemplo, si estamos realizando una carga masiva de usuarios el día 01/01/2008, pero deseamos que no puedan conectarse hasta el día 01/02/2008 (es decir, Fecha Desde = 01/01/2008 y Fecha Alta = 01/02/2008).

Como consecuencia de todo esto, resulta especialmente importante (al menos en muchos casos), además de utilizar los campos Fecha Desde y Fecha Hasta, también incluir Fecha de Creación, Fecha Alta y Fecha Baja. Eso sí, los campos Fecha Desde y Fecha Hasta serán gestionados internamente por las propias aplicaciones (el usuario no los podrá modificar directamente) mientras que los campos Fecha Alta y Fecha Baja serán rellenados por los usuarios (habitualmente, quiero decir). También es interesante recordar, que en ocasiones las aplicaciones gestionan de forma interna otros campos. Por ejemplo, en algunas aplicaciones se almacena en todas las tablas un campo con el último usuario que modificó (o creo) cada fila.

Vaya... en el capítulo anterior parecía que habíamos visto todo sobre el comportamiento de tablas versionadas (Fecha Desde y Fecha Hasta), y ahora resulta que acabamos de complicar más nuestro Modelo de Versionado: no sólo debemos gestionar nuestras Fecha Desde y Fecha Hasta, sino que además deberemos gestionar correctamente nuestras Fecha Alta, Fecha Baja y Fecha Hora de Creación.

Bueno... tranquisú.... poco a poco, y paso a paso...

Volver a: [Trabajar con tablas versionadas (Fecha Desde y Fecha Hasta) en SQL Server, Slowly Changing Dimension (SCD) Tipo 2]




Miembros de
Miembros de GITCA (Global IT Community Association)

Menu de Usuario
  Iniciar Sesión
  Registrarse
  Restablecer Contraseña
  Ventajas de Registrarse

Acerca de
  Contigo desde Oct 2007
  623 usuarios registrados
  86146 pageloads/mes
  Ranking Alexa 498160



Archivo

Junio de 2012 (1)
Mayo de 2012 (2)
Abril de 2012 (7)
Marzo de 2012 (16)
Febrero de 2012 (9)
Enero de 2012 (5)
Diciembre de 2011 (10)
Noviembre de 2011 (10)
Octubre de 2011 (4)
Septiembre de 2011 (5)
Agosto de 2011 (2)
Julio de 2011 (2)
Junio de 2011 (4)
Mayo de 2011 (2)
Abril de 2011 (6)
Marzo de 2011 (4)
Febrero de 2011 (10)
Enero de 2011 (5)
Diciembre de 2010 (6)
Noviembre de 2010 (4)
Octubre de 2010 (8)
Septiembre de 2010 (4)
Agosto de 2010 (1)
Julio de 2010 (3)
Mayo de 2010 (5)
Abril de 2010 (6)
Marzo de 2010 (8)
Febrero de 2010 (3)
Enero de 2010 (1)
Diciembre de 2009 (9)
Noviembre de 2009 (14)
Octubre de 2009 (2)
Septiembre de 2009 (8)
Agosto de 2009 (2)
Julio de 2009 (10)
Junio de 2009 (9)
Mayo de 2009 (10)
Abril de 2009 (9)
Marzo de 2009 (3)
Febrero de 2009 (2)
Enero de 2009 (3)
Noviembre de 2008 (2)
Octubre de 2008 (2)
Septiembre de 2008 (2)
Agosto de 2008 (5)
Julio de 2008 (5)
Junio de 2008 (1)
Mayo de 2008 (3)
Abril de 2008 (2)
Marzo de 2008 (2)
Febrero de 2008 (2)
Enero de 2008 (5)
Noviembre de 2007 (2)
Octubre de 2007 (2)






Copyright © 2007 GuilleSQL, todos los derechos reservados.