Slowly Changing Dimension - Tensho97/Aprende-a-Aprender GitHub Wiki
El término dimension se refiere a un grupo lógico de datos. Una dimensión que cambia con el tiempo es una slowly changing dimension, es decir, una dimensión que cambia lentamente.
Esta es la estrategia mas básica y sencilla de implementar. Cuando un registro cambie simplemente los sobreescribimos.
id_producto | Rubro | Tipo | Producto |
---|---|---|---|
1 | Rubro1 | Tipo1 | Producto1 |
id_producto | Rubro | Tipo | Producto |
---|---|---|---|
1 | Rubro2 | Tipo1 | Producto1 |
Esta estrategia requiere nuevas columnas del tipo : FechaInico/FechaFin/Version/VersionActual (boolean) Cuando haya cambio en los registros, se añade una nueva fila y se completan los datos sobre el historial.
id_producto | Rubro | Tipo | Producto |
---|---|---|---|
1 | Rubro2 | Tipo1 | Producto1 |
id_producto | Rubro | Tipo | Producto | Fecha Inicio | Fecha Fin | Version | Version Actual |
---|---|---|---|---|---|---|---|
1 | Rubro1 | Tipo1 | Producto1 | 01/01/1000 | 01/01/9999 | 1 | true |
id_producto | Rubro | Tipo | Producto | Fecha Inicio | Fecha Fin | Version | Version Actual |
---|---|---|---|---|---|---|---|
1 | Rubro1 | Tipo1 | Producto1 | 01/01/1000 | 06/11/2009 | 1 | false |
2 | Rubro2 | Tipo1 | Producto1 | 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 ("id_Producto").
- 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.
En esta técnica se debe añadir una columna nueva por cada dato que deseemos mantener. Este método permite guardar una limitada información de cambios.
id_producto | Rubro | Tipo | Producto |
---|---|---|---|
1 | Rubro1 | Tipo1 | Producto1 |
id_producto | Rubro | Rubro Anterior | Tipo | Producto |
---|---|---|---|---|
1 | Rubro1 | - | Tipo1 | Producto1 |
id_producto | Rubro | Rubro Anterior | Tipo | Producto |
---|---|---|---|---|
1 | Rubro2 | Rubro1 | Tipo1 | Producto1 |
Como puede observarse, se lleva a cabo el siguiente proceso:
- En la columna "Rubro Anterior" se coloca el valor antiguo. * En la columna "Rubro" se coloca el nuevo valor vigente.
Esta técnica permite guardar una limitada información de cambios.
Esta técnica se usa en combinación con alguna otra, y su función básica es almacenar en una tabla adicional los cambios históricos realizados en la tabla dimensión. Se indicará qué tipo de operación se ha realizado (Insert / Update / Delete), sobre qué campo y en qué fecha.
id_producto | Rubro_Cambio | Tipo_Cambio | Producto_Cambio | Fecha_De_Cambio |
---|---|---|---|---|
1 | Insert | - | - | 05/06/2000 |
2 | Insert | Insert | - | 25/10/2002 |
3 | - | Insert | - | 17/01/2005 |
4 | - | - | Insert | 18/02/2009 |
Esta técnica es una combinación de los tipos 1,2 y 3. Se denomina "tipo 6" simplemente porque 6 = 1 + 2 + 3.
Autor: Julián