Saltar la navegación

SCD Tipo 2: Añadir fila

Esta estrategia requiere que se agreguen algunas columnas adicionales a la tabla de Dimensión, para que almacenen el historial de cambios.

Las columnas que suelen agregarse son:

  • fechaInicio: fecha desde que entró en vigencia el registro actual. Por defecto suele utilizarse una fecha muy antigua, ejemplo: 01/01/1000.
  • fechaFin: fecha en la cual el registro actual dejó de estar en vigencia. Por defecto suele utilizarse una fecha muy futurista, ejemplo: 01/01/9999.
  • version: número secuencial que se incrementa cada nuevo cambio. Por defecto suele comenzar en 1.
  • versionActual: especifica si el campo actual es el vigente. Este valor puede ser en caso de ser verdadero: true o 1; y en caso de ser falso: false o 0.

Entonces, cuando ocurra algún cambio en los valores de los registros, se añadirá una nueva fila y se deberán completar los datos referidos al historial de cambios.

Para ejemplificar este caso, se tomará como referencia la siguiente tabla:

idProducto rubro tipo producto
1 Rubro 1 Tipo 1 Producto 1

A continuación se añadirán las columnas que almacenarán el historial:

idProducto rubro tipo producto fechaInicio fechaFin version versionActual
1 Rubro 1 Tipo 1 Producto 1 01/01/1000 01/01/9999 1 true

Ahora, se supondrá que este producto ha cambiado de Rubro, y ahora a pasado a ser Rubro 2, entonces se obtendrá lo siguiente:

idProducto rubro tipo producto fechaInicio fechaFin version versionActual
1 Rubro 1 Tipo 1 Producto 1 01/01/1000 06/11/2009 1 false
2 Rubro 2 Tipo 1 Producto 1 07/11/2009 01/01/9999 2 true

Como puede observarse, se lleva a cabo el siguiente proceso:

  • Se añade una nueva fila con su correspondiente clave subrogada (idProducto).
  • Se registra la modificación (rubro).
  • Se actualizan los valores de fechaInicio y fechaFin, tanto de la fila nueva, como la antigua (la que presentó el cambio).
  • Se incrementa en uno el valor del campo version que posee la fila antigua.
  • Se actualizan los valores de versionActual, tanto de la fila nueva, como la antigua; dejando a la fila nueva como el registro vigente (true).

Esta técnica permite guardar ilimitada información de cambios.