Um banco de dados multidimensional é frequentemente usado em análise OLAP (Online Analytical Processing) sendo
orientado por dimensões, e não por tabelas isoladas como no modelo relacional puro. Nesse contexto, considere uma
instância relacionada às vendas de uma loja de varejo. As dimensões, nesse caso, poderiam ser:
1. Tempo: Dias, Meses, Trimestres, Anos
2. Produto: ID do Produto, Nome do Produto, Categoria
3. Localização: Cidade, Estado, País
4. Vendedor: ID do Vendedor, Nome, Departamento
Esse banco de dados multidimensional pode ser visualizado como um “cubo” com quatro dimensões, onde cada dimensão forma um dos eixos. Os pontos dentro desse “cubo” representam valores específicos de medidas, como é o caso do
total de vendas. Esses pontos podem também representar algo mais complexo envolvendo muitas dimensões como, por
exemplo, as vendas do Produto P no Estado Q durante o Mês R por Vendedor S.
Muitas vezes esses “cubos” são implementados em bancos de dados relacionais convencionais, de modo que os usuários
possam usar linguagens amplamente conhecidas, como é o caso da linguagem de consultas SQL.
Para isso, é necessário modelar tabelas de dimensão e de fato:
1. DimensaoTempo: com colunas tais como TempoID, Mes, Ano
2. DimensaoProduto: com colunas tais como ProdutoID, NomeProduto, Categoria
3. DimensaoLocalizacao: com colunas tais como LocalizacaoID, Cidade, Estado, País
4. FatoVendas: com colunas tais como TempoID, ProdutoID, LocalizacaoID, TotalVendas
Com base nas tabelas deste esquema relacional em particular, que representam um banco de dados multidimensional,
considere que se deseja fazer a seguinte consulta de tipo “slice and dice”:
“Quanto foi vendido em termos de valor total nas categorias ‘Eletrônicos’
e ‘Roupas’ no estado de ‘Pernambuco’ durante o ano de 2022?”
A expressão SQL que responde a essa consulta é