Professional Documents
Culture Documents
on
Indice general
Indice general
Indice de figuras
7
7
9
9
10
12
13
17
17
19
21
23
24
25
25
27
28
3. La F
abrica de Informaci
on Corporativa
3.1. Arquitectura del sistema de informacion: la FIC . . . . . .
3.1.1. Arquitectura seg
un Kimball . . . . . . . . . . . . .
3.1.2. Arquitectura seg
un Inmon . . . . . . . . . . . . . .
3.2. Construccion de la FIC . . . . . . . . . . . . . . . . . . .
3.2.1. ETL. Extraccion, Transformacion y Carga . . . . .
3.2.2. Desarrollo de ETL . . . . . . . . . . . . . . . . . .
3.2.3. Estructura de los proyectos de desarrollo de la FIC
3.2.4. Nuevos perfiles para el desarrollo de proyectos FIC
31
31
31
32
34
34
35
35
35
Bibliografa
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
37
INDICE GENERAL
Indice de figuras
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7
8
8
9
9
9
10
10
10
11
12
12
12
13
13
14
14
15
17
18
18
19
21
22
22
22
23
23
24
25
25
27
28
28
29
31
32
33
. .
. .
2.2
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
INDICE DE FIGURAS
Captulo 2
El Modelo de Datos
Multidimensional
2.1.
Que aplicacion seramos capaces nosotros de hacer ahora mismo para gestionar las ventas
en una cadena de supermercados? La figura 2.2 nos muestra un ejemplo de lo que sabramos
hacer.
Producto
Sept 2004
Sept 2005
2.1.1.
El objetivo principal no es mas que registrar transacciones, esto es, entrada y modificacion
de los datos; y estan destinados a usuarios operacionales (en nuestro ejemplo, los cajeros).
Pero como ya hemos visto, necesitamos informes. Cuales? Muchos y de muy diversa
ndole: los que el usuario determine cuando analiza la informacion (en vez de a priori, durante
el dise
no de la base de datos).
Obtener el informe de la figura 2.4 es sencillo pero no trivial. Muy probablemente el
decisor no sabra hacerlo. El trabajo del informatico en ese caso es crear informes a medida.
2.1.2.
Los modelos relacionales y E/R se dicen que son homogeneos porque todas las relaciones
tienen la misma importancia (recordemos que estan orientados a transacciones y no tanto a
consultas).
El modelo multidimensional es no homogeneo (con unas relaciones mas importantes que
otras) y no orientado a transacciones, sino orientado a consultas.
Los informes requeridos por el director del departamento de ventas seran del tipo cu
anto
de que, quien, cu
ando, c
omo, .... En este caso, cu
anto sera lo importante (tambien llamado
foco de atencion) y el resto sera lo adicional.
10
2.1.3.
11
En nuestro ejemplo de la cadena de supermercados, los productos tienen varios atributos, como descripcion, tipo, marca, provincia de fabricacion, etc. Tambien puede resultar
interesante agrupar el eje de los productos seg
un alguno o algunos de estos atributos.
Esta operacion de agrupar los datos de una determinada dimension seg
un alguno o algunos
de sus atributos recibe el nombre de roll-up (vease la figura 2.10), mientras que la operacion
inversa se conoce como drill-down.
El extremo de roll-up consistira en agrupar todos los puntos de una dimension en un
solo punto. Por otra parte, una vez que se ha hecho roll-up, para poder hacer drill-down
se plantea un problema irresoluble si no se almacenaran los datos de mas bajo nivel (en
nuestro ejemplo, las ventas de productos individuales).
Por lo tanto, para hacer drill-down lo que en realidad se hace es un roll-up a partir del
cubo base (cubo con todos los datos al menor nivel de detalle posible) para conseguir el
cubo que se desea obtener.
12
2.1.4.
Los sistemas OLTP (On Line Transactional Processing, vease la figura 2.12) son los que
hemos aprendido en cursos anteriores. Ahora estudiaremos los sistemas OLAP (On Line
Analytical Processing).
13
2.1.5.
Implementaci
on de los sistemas multidimensionales: Nivel L
ogico
14
ROLAP
Rapido (y aumentando)
SGBD Relacional
- Hay especialistas
- Deben aprender lo nuevo
Sin lmite en el no de dimensiones
Tras esta comparativa y sabiendo que hoy por hoy en el mercado imperan los sistemas
ROLAP vamos a ver como se implementan estos. Recordamos que el dise
no a nivel conceptual
del modelo de datos multidimensional de nuestro ejemplo de la cadena de supermercados tena
un aspecto similar al mostrado en la figura 2.16.
15
Marca
Producto-nombre
Fabricante
Codigo barras
Provincia fabricacion
Color
Tipo emvase
Familia
Peso
Nombre
Departamento
Seccion
Nombre
Nombre
Responsable
Responsable
Algunas entradas (o registros) de la tabla Producto podran ser, por ejemplo:
Agua Lanjar
on 05L, XXX, NA, PVC, 05K, Lanjar
on, Aguas Lanjar
on, Granada,
Aguas, Bebidas no Alcoh
olicas, ...
Agua Lanjar
on 15L, XXX, NA, PVC, 15K, Lanjar
on, Aguas Lanjar
on, Granada,
Aguas, Bebidas no Alcoh
olicas, ...
Agua Lanjar
on 5L, XXX, NA, PVC, 5K, Lanjar
on, Aguas Lanjar
on, Granada, Aguas,
Bebidas no Alcoh
olicas, ...
Otros ejemplos de registros para la tabla Tiempo podran ser:
24/10/2005, lunes, no fin de semana, laborable, oto~
no, 43, octubre, 10, 2005
no, 43, octubre, 10, 2005
25/10/2005, martes, no fin de semana, laborable, oto~
Como vemos, con esta implementacion aparece claramente el problema de la informacion
replicada. Por lo tanto, la solucion pasa por normalizar nuestro dise
no. Y as obtenemos el
conjunto de tablas que aparecen en la figura 2.18.
16
Otra diferencia que podramos pensar que existe entre ambas implementaciones es la del
espacio ocupado por cada una de ellas. Para analizar esto recordemos lo que decamos sobre
la normalizacion: cuando esta se aplica conseguimos evitar anomalas en las modificaciones,
ya que se coloca cada dato en un solo sitio, con el consecuente ahorro de espacio.
Vamos a estimar el tama
no ocupado por una implementacion en estrella suponiendo que
tenemos los siguientes valores: 60.000 productos, 1825 das, 20 tiendas y 500 promociones.
Parece evidente que las tablas de cada una de las dimensiones seran mas grandes que con
una implementacion de copo de nieve. Ahora bien, en cuanto a la tabla de los hechos (la
ventas), que significan cada uno de sus registros?
Venta en un da, de un producto, en una tienda, bajo una promoci
on
24/10/2005, Botella Agua 05L, Mercadona Parque Almunia, sin promoci
on,
25 u, 05 Euros, 03 Euros
Por otra parte debemos plantearnos cuantos registros puede tener la tabla de los hechos.
Pues como maximo tendra el producto 60000 1825 20 500 = 10 095 1012 , lo cual dara
lugar a un cubo totalmente macizo que, como ya vimos, no es nada probable. Pensemos que
lo que estaramos diciendo con ello es que cada da se han vendido cada uno de los productos,
en cada una de las tiendas, bajo cada una de las promociones.
Un estimacion aproximada del n
umero real de registros podra ser:
1825 das 20 tiendas 10 % de 60000 productos 10 5 promociones = 3280 5 106 registros
As, la tabla realmente grande es la de los hechos y es ah donde debemos esforzarnos por
ahorrar espacio. Un calculo del espacio ocupado por cada registro de dicha tabla podra ser:
Mediciones
Cantidad 2 bytes
PVP
4 bytes
Coste
4 bytes
10 bytes
Llaves externas
Fecha: dd/mm/aaaa
8 bytes
Producto: codigo barras 10 bytes
Tienda: nombre
15 bytes
Promocion: nombre
25 bytes
58 bytes
Llaves generadas
Fecha
2 bytes
Producto
4 bytes
Tienda
2 bytes
Promocion 2 bytes
10 bytes
Es decir (10 + 10) 20 bytes por cada registro, ocupando as la tabla completa un total de
3280 5 106 20 = 60 57 GB. No olvidemos que ahorrando espacio tambien estamos mejorando
el rendimiento global del sistema, reduciendo, por ejemplo, el tiempo de respuesta ante una
consulta.
2.2 Dise
no multidimensional
2.2.
17
Dise
no multidimensional
2.2.1.
1. Seleccionar el
area de negocio
En este primer paso debemos determinar quien sera el usuario dentro de la piramide de
la organizacion (figura 2.1) que usara la aplicacion.
Es mas, debemos determinar el area, el usuario y los objetivos del mismo (es decir, las
decisiones a las que se va a dar soporte).
En nuestro ejemplo el area es el departamento de ventas, el usuario es el director del
departamento de ventas y los objetivos son permitirle tomar decisiones sobre precios de productos, promociones, etc.
2. Definir los hechos
a) Ventas de un producto en una tienda, en una fecha, bajo una promocion.
b) Ventas de un producto en una lnea de ticket, una tienda, en una fecha, bajo una
promocion.
3. Definir las dimensiones. Bases
Identificamos todas las dimensiones que se nos ocurran con todos los atributos que pensemos (siempre que podamos obtener los datos de alguna fuente), ya que cuanto mayor sea
el n
umero de dimensiones con sus respectivos descriptores, mayor es el n
umero de combinaciones posibles para hacer roll-up, es decir, mayor es el n
umero de posibles informes que se
pueden crear.
En ese momento definimos las bases, que no son mas que el conjunto de dimensiones que
identifican unvocamente a cada registro de los hechos.
En nuestro ejemplo la base la forman las dimensiones Producto, Tienda, Fecha y Promoci
on,
aunque podran haber sido otras, como por ejemplo LineaTicket de un Ticket, o bien Fecha,
Hora, Caja y Tienda.
En ocasiones puede ocurrir que nos encontremos con una dimension con muchsimos
registros y con mucha informacion repetida, como ocurre en la figura 2.19.
18
U. Vendidas
ImporteVenta
CosteVenta
BeneficioVenta
(b)
5.Validaci
on
1. Comprobar que hay fuentes de datos (generalmente aplicaciones OLTP).
2. Estimar el n
umero de registros de los hechos y de alguna dimension, si esta es especialmente grande.
1
2.2 Dise
no multidimensional
2.2.2.
19
Dimensiones degeneradas
Un registro de LineaTicket tendra el siguiente aspecto:
Lnea
1
2
3
Ticket
328-25
328-25
328-25
Subparte da
Noche
..
.
Parte da
Noche
..
.
10:00:00
..
.
Media ma~
nana
..
.
Ma~
nana
..
.
16:00:00
..
.
1a hora de la tarde
..
.
Tarde
..
.
23:59:59
Noche
Noche
Para empezar podramos quedarnos solo con aquellos registros de las horas en las que
permanecieran abiertas las tiendas. Pero si fueramos mas alla y decidieramos prescindir de los
atributos subparte del da y parte del da, nos encontraramos nuevamente con una dimension
degenerada.
20
Dimensiones cambiantes
Hasta ahora hemos considerado que las dimensiones eran fijas, estaticas, mientras que a
los hechos se le estan a
nadiendo nuevos registros continuamente.
Pero la realidad no es del todo as, puesto que existen las llamadas dimensiones cambiantes. Y estos cambios en los datos de las dimensiones deben quedar reflejados de alguna
manera. Existen cuatro posibilidades:
Tipo 1 Sobreescribir los valores antiguos con los nuevos.
Antes de los cambios, tendramos, por ejemplo:
Nombre
F
elix G
omez
Telefono
968269977
Telefono
958206925
Esta solucion no siempre sera aceptable, puesto que no podemos perder de vista que estamos cambiando la historia.
Tipo 2 Crear un nuevo registro con el nuevo valor del registro correspondiente.
Antes de los cambios, tendramos, por ejemplo:
ID
34
CodBarras
1X73F624J
Descripcion
Agua Lanjar
on 5L
Seccion
Alimentaci
on
CodBarras
1X73F624J
1X73F624J
Descripcion
Agua Lanjar
on 5L
Agua Lanjar
on 5L
Seccion
Alimentaci
on
Aguas
CodBarras
1X73F624J
Descripcion
Agua Lanjar
on 5L
Seccion
A
CodBarras
1X73F624J
1X73F624J
Descripcion
Agua Lanjar
on 5L
Agua Lanjar
on 5L
Seccion
A
B
NuevaSeccion
B
C
CodBarras
1X73F624J
Descripcion
Agua Lanjar
on 5L
Seccion
A
NuevaSeccion
B
UltimaSecci
on
C
A este tipo tambien se le conoce como realidad alternativa, puesto que permite ver la
informacion almacenada, desde distintas perspectivas.
2.2 Dise
no multidimensional
21
Tipo 6 (3+2+1)
Antes de los cambios, tendramos, por ejemplo:
ID
34
CodBarras
1X73F624J
Descripcion
Agua Lanjar
on 5L
Seccion
A
NuevaSeccion
A
Ultimo
S
Seccion
A
B
NuevaSeccion
B
B
Ultimo
No
S
NuevaSeccion
C
C
C
Ultimo
No
No
S
CodBarras
1X73F624J
1X73F624J
Descripcion
Agua Lanjar
on 5L
Agua Lanjar
on 5L
CodBarras
1X73F624J
1X73F624J
1X73F624J
Descripcion
Agua Lanjar
on 5L
Agua Lanjar
on 5L
Agua Lanjar
on 5L
Seccion
A
B
C
2.2.3.
Caso de dise
no seg
un fotografa peri
odica
Hasta ahora hemos visto que en los hechos se registraban transacciones (de ventas, por
ejemplo). Ahora vamos a tomar como ejemplo uno en el que el foco de atencion es el inventario
de un almacen.
El enfoque 1 que se muestra en la figura 2.23 es equivalente al ya hecho para las ventas.
22
La condicion necesaria que se debe cumplir para poder aplicar drill-across es que ambos
esquemas compartan, al menos, las dimensiones sobre las que se definen las condiciones.
A esta combinacion de dimensiones procedentes de distintos esquemas se le llama constelacion (ver figura 2.25), aunque cada base de datos multidimensional individual no tiene por
que ser necesariamente en estrella.
2.2 Dise
no multidimensional
2.2.4.
23
ID fecha
6
ID tienda
69
Promocion
43
Existe
1
24
Dimensiones de mediciones
Otro esquema alternativo al presentado en la figura 2.27 es el que se puede observar en
la figura 2.29.
ID fecha
6
ID tienda
69
ID Promo
43
ID Medicion
2
Medida
25
2.2.5.
Dise
no de sistemas OLTP vs OLAP
2.3.
25
2.3.1.
Patr
on de consulta y t
ecnicas de indexaci
on
Todo informe creado sobre una base de datos multidimensional consta de una cabecera
o seleccion, unas columnas que son atributos de las dimensiones y otras columnas que son
mediciones de los hechos.
1. Seleccion sobre las dimensiones correspondientes. Por ejemplo: Bebidas, Enero2005.
Reduce las dimensiones solo a aquellos registros que cumplen las condiciones.
2. Obtener los atributos de las dimensiones para el informe.
3. Obtener los hechos asociados a los atributos seleccionados. Para ello existen dos posibilidades:
a) Hacer un join entre cada dimension y los hechos. Pero el resultado de cada uno de
esos joins es una tabla de tama
no similar a la de los hechos. Problema: resultados
intermedios demasiado grandes.
Figura 2.31: Join del producto cartesiano de las dimensiones y los hechos
Nombre
Pepe
Alberto
Alberto
Felix
Concha
Pepe
Sexo
Hombre
Hombre
Hombre
Hombre
Mujer
Hombre
26
Dada dicha tabla podramos crear un ndice de mapa de bits por cada atributo (nombre,
sexo, ...) mediante una nueva tabla que tuviera una columna por cada valor distinto del
atributo elegido. Y para cada uno de esos valores, se tendra una columna de ceros y unos
(tantos como registros tiene la tabla original) donde un 0 en la columna i-esima y en la posicion
j-esima indica que el valor i-esimo del atributo elegido NO se encuentra en el registro j-esimo
de la tabla original. Un 1 en esa misma posicion indica lo contrario. Por ejemplo:
Key
1
2
3
4
5
6
Nombre
Pepe
Alberto
Alberto
Felix
Concha
Pepe
Sexo
Hombre
Hombre
Hombre
Hombre
Mujer
Hombre
Felix
0
0
0
1
0
0
Nombre
Alberto Concha
0
0
1
0
1
0
0
0
0
1
0
0
Pepe
1
0
0
0
0
1
Sexo
Hombre Mujer
1
0
1
0
1
0
1
0
0
1
1
0
Del mismo modo, si quisieramos obtener los registros de todas aquellas personas cuyo
nombre fuera Alberto y cuyo sexo fuera mujer, sera tan sencillo como hacer:
Alberto
0
1
1
0
0
0
AND
Mujer
0
0
0
0
1
0
0
0
0
0
0
0
As, el DNI, por ejemplo, no sera un buen atributo para hacer ndices de mapas de bits
(ya que por cada columna de ceros y unos solo habra un 1 y el resto seran 0). La edad, sin
embargo, s podra ser un buen atributo para tal efecto.
Join index (ndice de join)
Se trata de un ndice creado sobre una tabla que considera valores de atributos de otra
tabla con la que se puede hacer join (podramos decir que es un join materializado).
Key
1
2
3
4
5
6
Nombre
Pepe
Alberto
Alberto
Felix
Concha
Pepe
Sexo
Hombre
Hombre
Hombre
Hombre
Mujer
Hombre
Venta
Cliente
4
Felix
1
0
0
0
0
0
0
1
Nombre
Alberto Concha
0
0
0
0
1
0
1
0
0
0
0
0
0
1
0
0
Pepe
0
1
0
0
1
1
1
1
27
2.3.2.
Partici
on de la tabla de hechos
El SGBD permite particionar (dividir) tablas en funcion de valores de uno o mas campos
(llaves o partes de ellas), de tal forma que se tiene una u
nica tabla logica con varias tablas
fsicas asociadas.
Con esto se facilita la gestion, mejorando las copias y restauraciones e incluso puede que
consultas. Por ello la tabla de hechos es una buena candidata para perticionarla, pero en
funcion de que llaves?
En el caso de las ventas la mejor particion sera en funcion del Tempo (la Fecha), ya que
proporcionara una distribucion bastante uniforme de los datos en las distintas tablas fsicas,
aunque tambien podra valer la tienda o una combinacion de ambas.
Las particiones son transparentes al usuario y se pueden crear y destruir dinamicamente.
28
2.3.3.
Definici
on de agregados
donde ni es el n
umero de niveles de la dimension i-esima (y el -1 es para no contar el cubo
base).
29
Fallo en la dispersi
on de los agregados
6=
150 106
= 5 106
30
y el n
umero de registros del agregado a nivel de a
no, como
20 tiendas (60,000 productos 100 %) 5 a
nos = 6 10
150 106
6=
411 103
365
El n
umero de registros en los agregados no se reduce en la misma proporcion que lo hacen
los ejes de coordenadas.
30
Captulo 3
La F
abrica de Informaci
on
Corporativa
3.1.
La FIC (Fabrica de Informacion Corporativa) recibe este nombre porque lo que se hace
en ella es tomar los datos a partir de las fuentes y con ellos fabricar informes que serviran
de soporte a los decisores.
3.1.1.
Arquitectura seg
un Kimball
32
Captulo 3. La F
abrica de Informaci
on Corporativa
Mercado.
El mercado representa las fuentes de datos, esto es, las aplicaciones previamente existentes en la organizacion (tambien conocidas como Legacy System).
Cocina.
Aqu es donde se cocinan los datos. Se extraen los datos necesarios de las fuentes,
se transforman (se depuran, se modifican y se integran) y se cargan en los diferentes
cubos.
Este proceso se conoce con el nombre de ETL (Extraction, Transformation, Load ), de
Extraccion, Transformacion y Carga.
Tambien existe una carga inicial de todos los datos historicos disponibles que el usuario necesite (por ejemplo, los datos de los u
ltimos 4 a
nos). Posteriormente se realizan
refrescos periodicos de los nuevos datos que se van produciendo.
Comedor.
El usuario solo ve el comedor. Tanto la cocina, como el mercado son propiedad exclusiva del informatico. Aqu puede tener lugar el Data Warehouse Bus Architecture que
vimos en el captulo 2, para integrar unos cubos con otros.
3.1.2.
Arquitectura seg
un Inmon
33
Es no volatil
Esta integrada
Data
Warehouse
Historiada (Pelcula)
Orientado a temas
Integrada
No volatil
Da soporte a las decisiones
VS
Sistema transaccional
u operacional
No historiada (Fotografa)
Orientado a aplicaciones
No integrada
Volatil
Registra transacciones
El Operational Data Store (ODS) es una base de datos con las siguientes caractersticas:
Es no historiada
Esta orientada a temas
Esta integrada
Es volatil
Sirve de soporte a la toma de decisiones y para registrar transacciones operacionales.
34
Captulo 3. La F
abrica de Informaci
on Corporativa
3.2.
Construcci
on de la FIC
3.2.1.
ETL. Extracci
on, Transformaci
on y Carga
Extracci
on
Se obtienen los datos de las fuentes de datos con dos propositos principales:
1. La carga inicial, que se realiza solo una vez y en la que se toman todos los datos
existentes necesarios.
2. Las actualizaciones, que se realizan periodicamente y en las que se extraen todos aquellos
datos que hubieran sido modificados.
El problema se presenta a la hora de determinar que datos han sido modificados para las actualizaciones periodicas. Existen dos metodos para detectar estas modificaciones:
Retardados e Inmediatos1 .
Retardados. Con este tipo de metodos se pueden perder cambios si se realiza mas de
una modificacion sobre un mismo dato entre dos actualizaciones consecutivas.
Comparacion de imagenes. Se saca una copia, se modifica el original y luego se
comparan ambos para detectar los cambios. Siempre se puede realizar, pero tardara tanto mas tiempo cuanto mayor sea la base de datos.
Huella de tiempo. Se emplea un campo que indica la fecha de la u
ltima modificacion. Si ese campo ya existe, esta es una solucion factible. En otro caso, puede
resultar bastante costoso.
Inmediatos. Con este tipo de metodos no se pierden cambios.
Examen ;-)
3.2 Construcci
on de la FIC
35
Carga (Loading )
Existen dos variantes para la carga de datos:
Incremental. A
nadir solamente lo nuevo.
Cargar todo de nuevo (solo aplicable a los cubos). Se suele aplicar a los agregados.
3.2.2.
Desarrollo de ETL
Todo el proceso que acabamos de describir de ETL lo realizara un programa informatico que, o bien podremos programar nosotros mismos, o bien podemos adquirirlo como un
producto comercial existente.
Dicho programa suele estar escrito en alg
un lenguaje como por ejemplo SQL hospedado.
3.2.3.
3.2.4.
Dise
nador de sistemas multidimensionales: OLAP, Data Mass o Business Intelligence.
Tecnico de sistemas del SGBD OLAP (para saber optimizar consultas, por ejemplo).
Especialista en extraccion y elicitacion de los datos, as como en el manejo de herramientas ETL.
Dise
nador de la arquitectura de la FIC.
Dise
nador del Data Warehouse Corporativo.
36
Captulo 3. La F
abrica de Informaci
on Corporativa
Bibliografa
[1] R. Andreu, J. Ricart, J. Valor, Estrategia y Sistemas de Informaci
on, McGraw-Hill,
1996
[2] W. Inmon, C. Imhoff, R. Sousa, Corporate Information Factory, John Wiley & Sons,
Inc., 1998
[3] M. Jarke, M. Lenzerini, Y. Vassiliou, P. Vassiliadis, Fundamentals of Data Warehouses,
2nd Edition, Springer-Verlag, 2003
[4] R. Kimball, The Data Warehouse Toolkit, 2nd Edition, John Wiley & Sons, Inc., 2002
37