Modelagem Dimensional — Star Schema
Antes de qualquer dashboard, o modelo. Projetei um esquema estrela (Kimball) sobre os dados de um e-commerce — uma tabela-fato cercada de dimensões — para que análises e BI rodem rápido e façam sentido para quem não é da área.
O problema
Dados transacionais (OLTP) são ótimos para registrar pedidos, mas péssimos para analisar: tabelas muito normalizadas exigem joins complexos e consultas lentas, e ninguém do negócio entende o esquema.
Para responder "quanto vendemos por categoria, região e mês?" de forma rápida e clara, é preciso reorganizar os dados num modelo dimensional.
O modelo estrela
Defini uma tabela-fato fato_vendas com grão de um item de pedido, cercada por quatro dimensões conformadas (produto, cliente, vendedor, tempo). As métricas (preço, frete, pagamento) ficam no fato; os atributos descritivos, nas dimensões.
CREATE TABLE fato_vendas ( order_id TEXT, -- dimensão degenerada product_id TEXT REFERENCES dim_produto(product_id), customer_id TEXT REFERENCES dim_cliente(customer_id), seller_id TEXT REFERENCES dim_vendedor(seller_id), date_id INTEGER REFERENCES dim_tempo(date_id), price NUMERIC, freight_value NUMERIC, payment_value NUMERIC ); -- grão: 1 linha por item de pedido
Diagrama do star schema
fato_vendas (ciano) conecta-se às dimensões (âmbar) por chaves estrangeiras; order_id é dimensão degenerada.Por que importa
Com o modelo pronto, as análises das outras páginas (receita por categoria, RFM) viram consultas simples e rápidas — bastam joins do fato com as dimensões. É a fundação de todo o resto.