Projetos
SQL · Modelagem Dimensional

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.

Ano 2025 Papel Modelagem de Dados Status Concluído
Contexto

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.

Solução

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
O modelo

Diagrama do star schema

Resultado

Por que importa

1 + 4
um fato e quatro dimensões conformadas
item
grão definido: linha por item de pedido
PK / FK
integridade referencial explícita

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.

Ferramentas

Stack & decisões

SQL Modelagem Dimensional Star Schema (Kimball) Fato & Dimensões PK / FK