Slowly Changing Dimension - Tensho97/Aprende-a-Aprender GitHub Wiki

¿Qué es?

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.

Tipo 1: Sobreescribir

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

Tipo 2: Añadir fila

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.

Tipo 3: Añadir Columna

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.

Tipo 4: Tabla de historia separada

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

Tipo 6: Híbrido

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

⚠️ **GitHub.com Fallback** ⚠️