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.
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Sin obra derivada 4.0