El modelado dimensional es una técnica fundamental para estructurar datos de manera óptima con el propósito de facilitar el análisis y la generación de reportes en almacenes de datos. Esta metodología se centra en dos componentes principales: dimensiones y hechos. Las dimensiones proporcionan el contexto categórico, mientras que los hechos contienen datos cuantitativos que describen interacciones o eventos clave relacionados con esas categorías.
Por ejemplo, en el contexto de una base de datos universitaria, las dimensiones pueden incluir estudiantes, escuelas y clases, mientras que los hechos podrían registrar inscripciones de estudiantes en clases. Este modelo permite identificar tendencias y patrones, como los semestres con mayor número de inscripciones o las clases más populares, brindando insights útiles para la toma de decisiones.
El modelado dimensional es especialmente efectivo porque simplifica estructuras complejas, lo que facilita su comprensión incluso para usuarios no técnicos. Además, permite organizar la información de manera que sea accesible y flexible para consultas específicas.
dim_students: Contiene información sobre los estudiantes, como su nombre, correo y estado académico.dim_classes: Detalla las clases, incluyendo nombre, horario y departamento.dim_date: Almacena fechas clave, como el inicio de semestres, años escolares y periodos de examen.fact_enrollments: Una tabla que registra inscripciones de estudiantes, incluyendo referencias a dimensiones relacionadas y atributos como la fecha de inscripción y la clase asociada.Las dimensiones y los hechos trabajan en conjunto para ofrecer una representación completa de las actividades dentro del sistema.
El modelado dimensional utiliza principalmente dos esquemas para estructurar los datos:
Esquema estrella (Star Schema):
Consiste en una tabla central de hechos conectada directamente a las dimensiones.
Ofrece una estructura simple que facilita el análisis y las consultas rápidas. Ejemplo:
CREATE OR REPLACE TABLE fact_enrollments (
enrollment_id NUMBER(10,0) PRIMARY KEY,
student_id NUMBER(10,0),
class_id NUMBER(10,0),
date_id NUMBER(10,0),
FOREIGN KEY (student_id) REFERENCES dim_students(student_id),
FOREIGN KEY (class_id) REFERENCES dim_classes(class_id),
FOREIGN KEY (date_id) REFERENCES dim_date(date_id)
);
Esquema copo de nieve (Snowflake Schema):
dim_classes.El proceso de construcción implica estructurar las tablas existentes, crear nuevas entidades y establecer relaciones claras entre dimensiones y hechos.
Renombrar tablas para facilitar su identificación:
Se utiliza el prefijo dim_ para dimensiones y fact_ para hechos. Ejemplo:
ALTER TABLE students RENAME TO dim_students;
ALTER TABLE classes RENAME TO dim_classes;
ALTER TABLE schools RENAME TO dim_schools;
Crear nuevas dimensiones:
Por ejemplo, una dimensión de fechas:
CREATE OR REPLACE TABLE dim_date (
date_id NUMBER(10,0) PRIMARY KEY,
year NUMBER(4,0),
semester VARCHAR(255)
);
Diseñar la tabla de hechos:
La tabla de hechos centraliza las métricas clave y conecta con las dimensiones. Ejemplo:
CREATE OR REPLACE TABLE fact_enrollments (
enrollment_id NUMBER(10,0) PRIMARY KEY,
student_id NUMBER(10,0),
class_id NUMBER(10,0),
date_id NUMBER(10,0),
FOREIGN KEY (student_id) REFERENCES dim_students(student_id),
FOREIGN KEY (class_id) REFERENCES dim_classes(class_id),
FOREIGN KEY (date_id) REFERENCES dim_date(date_id)
);