BI(Business Intelligence) é um termo relativamente novo, mas certamente não é um conceito novo.  O conceito é simplesmente fazer uso de informações já disponíveis em sua empresa para ajudar os responsáveis pelas tomadas de decisões a adotar as melhores opções e de forma mais rápida.

        Um DW(Data warehouse) geralmente é um componente central de uma infra-estrutura BI em uma organização, funciona como um repositório de armazenagem e análise de informações numéricas.

        Após o entendimento de OLTP e OLAP (post anterior), vamos criar nosso ambiente DW utilizando a Modelagem Multidimensional. Na modelagem multidimensional temos 2 tipos principais de tabelas: Fato e Dimensão.
 
TABELA FATO
        
        Em um Data warehouse, uma tabela que armazena os valores detalhados de medidas, ou fatos, é denominada de tabela de fatos.  Por exemplo, uma tabela que armazene Quantidade, Valor Total e Produto, conforme abaixo:

<img src="http://www.ecode10.com/artigos/Post07%20-%20Resultado1.JPG">

        Nessas linhas de exemplo de uma tabela de fatos, as duas primeiras colunas, Produto e Mês, são colunas chaves.  As colunas restantes, Quantidade e ValorTotal, contém valores de medidas. Em uma tabela de fatos cada medida contém uma coluna.

        O exemplo anterior ilustra o layout conceitual de uma tabela de fatos. Na verdade, uma tabela de fatos quase sempre usa uma chave do tipo inteiro para cada membro, em vez de um nome descritivo. O uso de uma chave do tipo inteiro pode reduzir substancialmente o tamanho da tabela de fatos. O leiaute real de uma tabela de fatos poderia ser mais parecido com a tabela abaixo:


<img src="http://www.ecode10.com/artigos/Post07%20-%20Resultado2.JPG">

        Quando você coloca chaves do tipo inteiro na tabela de fatos, os títulos dos membros da dimensão tem de ser colocados em uma tabela diferente, uma tabela de dimensão.

        Você normalmente terá uma tabela de dimensão para cada dimensão representada em uma tabela de fatos.

TABELA DIMENSÃO

        Uma tabela de dimensão contém o nome específico de cada membro da dimensão. O nome membro da dimensão é denominado Atributo
Por exemplo se você tiver três produtos em uma dimensão Produto, a tabela dimensão seria como essa:


<img src="http://www.ecode10.com/artigos/Post07%20-%20Resultado3.JPG">

NomeProduto é um atributo, ProdutoID é um atributo-chave.

        Em um data warehouse, o atributo-chave em uma dimensão deve conter um valor exclusivo para cada membro da dimensão. Em termos de banco de dados relacional, este atributo-chave é denominado chave primária.

        Além de tornar a tabela de fatos menor, mover informações sobre dimensão para uma tabela separada tem uma vantagem adicional: você pode adicionar novas informações sobre cada membro da dimensão. Por exemplo Categoria, veja abaixo:


<img src="http://www.ecode10.com/artigos/Post07%20-%20Resultado4.JPG">

        Categoria agora é um atributo adicional da dimensão Produto. Se souber o ProdutoID, você poderá determinar não apenas NomeProduto, mas também a Categoria.