Relación Muchos a Muchos
Se debe evitar mantener en el DW tablas de Dimensiones con relaciones muchos a muchos entre ellas, ya que esta situación puede, entre otros inconvenientes, provocar la pérdida de la capacidad analítica de la información y conducir a una agregación incorrecta de los datos.
Para explicar esta problemática, se tomará como ejemplo la relación existente entre ríos y provincias, es decir:
- Una provincia tiene uno o más ríos, y un río pertenece a una o más provincias.
Se tomará como referencia las siguientes tablas que contienen datos relacionados a ríos y provincias:
Cuando existe este tipo de relación (muchos a muchos) entre dos o más tablas, se pueden realizar diferentes acciones para abordar esta situación. Una posible solución, sería llevar a cabo los siguientes pasos:
- 1) Crear una tabla de Dimensión por cada entidad que pertenece a la relación. Cada una de estas tablas NO debe incluir ninguna correspondencia con las demás. En este caso se crearán dos tablas de Dimensiones, dimRios (correspondiente a la entidad rios) y dimProvincias (correspondiente a la entidad provincias).
- 2) Crear otra tabla de Dimensión (en este caso dimRiosProvincias) que sea hija de las tablas de Dimensiones recientemente confeccionadas (en este caso dimRios y dimProvincias), que estará compuesta de los siguientes campos:
- Clave principal: dato autoincrementable (en este caso idRioProvincia).
- Claves foráneas: se deben añadir columnas que referencien la clave principal de las tablas de Dimensiones involucradas. En este caso idRio e idProvincia.
- Otros campos de información adicional.
- 3) Incluir el campo clave principal creado en el paso anterior (idRioProvincia) en la tabla de Hechos.
El resultado sería el siguiente:
Otra posible solución sería agregar las dos claves primarias de las tablas de Dimensiones dimRios y dimProvincias en la tabla de Hechos.
Existen otras soluciones para solventar esta brecha, pero la primera propuesta posee mucha performance, ya que:
- elimina la relación muchos a muchos,
- solo se necesita un campo clave en la tabla de Hechos, y
- las relaciones entre las tablas resultantes es simple y fácil de visualizar.
La única desventaja es en cuanto a los procesos ETL, ya que se aumenta su complejidad y tiempo de proceso.
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Sin obra derivada 4.0