Estoy construyendo un depósito de datos de un hombre pobre utilizando un RDBMS. He identificado la tecla 'atributos' para ser registrado como:Diseño de depósito de base de datos: tablas de hechos y tablas de dimensiones
- sexo (verdadero/falso)
- clasificación demográfica (A, B, C, etc.)
- lugar de nacimiento
- fecha de nacimiento
- peso (registrada al día): El hecho de que se está grabando
Mis requisitos son ser capaz de ejecutar consultas 'OLAP' que me permiten:
- 'picadillo'
- 'perforar arriba/abajo de los datos y
- general, poder visualizar los datos desde diferentes perspectivas
Después de leer en esta área temática , el consenso general parece ser que esto se implementa mejor utilizando tablas de dimensiones en lugar de tablas normalizadas.
Suponiendo que esta afirmación es verdadera (es decir, la mejor manera de implementar la solución es utilizando tablas de hechos y de dimensiones), me gustaría buscar ayuda en el diseño de estas tablas.
'natural' (o obvias) dimensiones son:
- Fecha dimensión
- ubicación geográfica
que tienen atributos jerárquicos. Sin embargo, estoy luchando con la forma de modelar los siguientes campos:
- sexo (verdadero/falso)
- clasificación demográfica (A, B, C, etc.)
La razón por la que estoy luchando con estos campos es que:
- no tienen atributos evidentes jerárquicas que ayudarán a la agregación (AFAIA) - que sugieren que deberían estar en una tabla de hechos
- Son en su mayoría estáticos o muy raramente cambian, lo que sugiere que deberían estar en una tabla de dimensiones.
¿Quizás la heurística que estoy usando anteriormente es demasiado cruda?
Daré algunos ejemplos sobre el tipo de análisis que me gustaría llevar a cabo en el almacén de datos, espero que aclare las cosas.
Me gustaría agregar y analizar los datos por sexo y clasificación demográfica - por ej.responder preguntas como:
- ¿Cómo se comparan los pesos de los hombres y las mujeres en las diferentes clasificaciones demográficas?
- Qué clasificación demográfica (masculina Y femenina) muestra el mayor aumento en el peso este trimestre.
etc.
¿Alguien puede aclarar si el sexo y la clasificación demográfica son parte de la tabla de hechos, o si son (como sospecho) tablas de dimensiones.?
Suponiendo también que son tablas de dimensiones, ¿podría alguien elaborar las estructuras de la tabla (es decir, los campos)?
El 'obvio' esquema:
CREATE TABLE sex_type (is_male int);
CREATE TABLE demographic_category (id int, name varchar(4));
puede no ser la correcta.
gracias por los comentarios. Ahora que ahora SEX_TYPE y DEMOGRAPHIC_CATEGORY son dimensiones. Esta es una nueva área para mí, así que quizás tenga que hacer algunas preguntas más que pueden parecer banales/asmáticas. Por favor, tengan paciencia. De lo anterior, entiendo que necesito tener FK en la tabla de hechos que sean PK en SEX_TYPE y DEMOGRAPHIC_CATEGORY. ¿Podrías confirmar esto? (Estoy pensando en cómo tratar los casos de nuevos sex_types y categorías demográficas que aún no están en la base de datos). – morpheous