Relaciones n-m entre tablas de hechos y dimensiones Ejemplos • • • Múltiples diagnósticos Varios titulares cuentas bancarias Múltiples propietarios Qué hacer • • • Insertar tabla puente entre hechos y dimensiones Generar llave foránea generalizada en tabla de hechos Llave generalizada almacena varios valores reales Tablas puente: estructura Cada registro contiene • una llave que agrupa valores posibles (registrada en tabla de hechos) • una llave individual, llave foránea de la dimensión • Valor de ponderación cuya suma en cada grupo de llaves integrando una llave de grupo sea 1 Relaciones n-m Dimensión diagnóstico Clave_diagnóstico Atributo 1 .... Atributo n Tabla de puente Clave_grupo_diagnostico Clave diagnóstico Factor_ponderación Tabla de hechos Cod_Fecha Cod_paciente Cod_grupo_diag .... costo Consultas • • • Resúmen de gastos generados por diagnóstico (registrado en tabla de hechos) De tabla puente se obtiene ponderación de diagnósticos individuales Valor individual calculado con base en ponderacion y dato almacenado en hechos Dimensiones cambian en el tiempo • • • Dimensiones pueden adicionar registros Cómo manejar cambios en registros existentes? Que pasa si una dimensión crece? Cambios lentos en dimensiones • • • Valores de algún atributo cambian para algunos registros Importante registrar esos cambios en dwh Alternativas de solución? • .. • .. Dimensiones cambiantes: tipos 1. 2. 3. Reescribir registro con nuevos valores Pérdida de historia Crear registro con nuevo valor de llave para el mismo objeto de la bd operacional Crear atributo “antiguo” en registro para almacenar valor anterior Tipo 1 y 2 • • • • • Utilizado cuando atributo que cambia no es significativo. (posibilidad de eliminarlo) Ejemplos: correcciones de errores Apropiado para llevar control de cambios en dimensiones. Fechas de vigencia de valor, no significativas en tabla de hechos Si hay mas de un cambio dificultad de interpretación Tipo 2 • • • • Ventajas de las llaves ficticias en este caso Posibilidad de almacenar cambios en una entidad( igual llave operacional) creando llave ficticia cuando se producen cambios Ejemplo: clientes con atributos (profesión, estado civil, número de hijos,..etc.) Valores pueden cambiar en la historia de cliente Tipo 2 • • • • • Cliente con identificación 4.555.890 vinculado inicialmente como estudiante Datos: soltero , 0 hijos Cambios en datos del cliente podrían cambiar hábitos de compra Importante registrarlos Mediante cédula acceso a historia Tipo 3 • • • • • Utilizado cuando el cambio no implica cambio en la historia Cambios “suaves” Se podría “ignorar” Ejemplo: cambio en la categoría de un producto Posibilidad de escoger la categoria deseada Dimensiones muy grandes • • • • • • Dwh muy detallados – dimensiones grandes clientes: millones de registros Personas en ISS Propio de entidades públicas Impuestos (renta), censo Necesidad de indexación y diseño Dimensiones grandes • • • • Soporte al acceso sin criterio de selección para atributos de baja cardinalidad Soporte a lectura eficiente de dimensión Eliminen entradas repetidas Tareas del gestor de bases de datos disponible Dimensiones grandes cambiando rápidamente • • • • Dividir tablas de dimensión entre atributos que cambian y no cambian Tabla de hechos tendra 2 referencias Ejemplo: datos de cliente de no cambian ( nombre, fecha de nacimiento,...) y datos demográficos ( sueldo, estado civil, # hijos...) Necesidad de discretizar sueldos por rangos Separación dimensión Tabla de cliente Clave_grupo_diagnóstico Clave diagnóstico Factor_ponderación Dimensión demografía Clave_demografia Banda_sueldo Banda_hijos .... Atributo n Tabla de hechos Cod_Fecha Cod_cliente Cod_demografia .... .... Limitaciones • • • Una vez definida discretización no se puede cambiar Necesidad de limitar número de valores para que dimensión no crezca demasiado Datos separados