Cuando diseñamos un modelo de datos analítico, uno de los aspectos clave a tener en cuenta corresponde al nivel de normalización/desnormalización con que queremos dotar a la estructura del mismo. Es probable que la mayoría de los orígenes de datos que utilicemos a nivel profesional correspondan a sistemas de procesamiento de transacciones (OLTP). Estos sistemas son bases de datos relacionales optimizadas para llevar a cabo las tareas diarias de una oficina, principalmente la gestión de pedidos, facturas, reclamaciones, realización de asientos contables, etc…
En estos sistemas nos encontraremos frecuentemente con estructuras altamente normalizadas, donde prácticamente cada atributo se almacena en una tabla y, por lo tanto, un solo objeto, como por ejemplo «Cliente», estará almacenado en 10 o 20 tablas distintas relacionadas entre sí. Esto se debe a que dichas bases de datos OLTP están diseñadas para gestionar continuas operaciones de introducción y modificación de datos, por lo que una estructura de este tipo proporciona la ventaja de ahorrar tamaño en disco (lo que normalmente se traducirá en mayor velocidad) y que los cambios que introduzcamos en un atributo solo tengan que actualizarse una vez.