curso
Esquema em estrela versus esquema em floco de neve: Diferenças e casos de uso
Se você trabalha com data warehouses, sabe como é importante estruturar os dados de forma eficiente e fácil de manusear. Mas você já pensou em qual esquema de banco de dados melhor atende às suas necessidades? Há duas estruturas principais que você pode usar para isso: o esquema em estrela e o esquema em floco de neve.
O esquema em estrela é simples e rápido, ideal quando você precisa extrair dados para análise rapidamente. Por outro lado, o esquema de floco de neve é mais detalhado. Ele prioriza a eficiência do armazenamento e o gerenciamento de relacionamentos de dados complexos.
Neste artigo, mostrarei a você as estruturas desses esquemas, destacarei suas diferenças e detalharei suas vantagens. Ao final, você saberá onde cada esquema se encaixa e como decidir qual é o melhor para seus projetos de dados.
O que é um esquema estrela?
Um esquema em estrela é uma forma de organizar os dados em um banco de dados, especialmenteem data warehouses, para facilitar e agilizar a análise. No centro, há uma tabela principal chamada fact table, que contém dados mensuráveis, como vendas ou receita. Ao redor dela estãoas tabelas de dimensão , que adicionam detalhes como nomes de produtos, informações de clientes ou datas. Esse layout tem a forma de uma estrela.
Layout do esquema em estrela. Imagem do autor.
Vamos dar uma olhada nos principais recursos do esquema estrela:
- Tabelas de dimensão de nível único: As tabelas de dimensão se conectam diretamente à tabela de fatos sem camadas adicionais. Cada tabela se concentra em uma área, como produtos, regiões ou tempo, o que simplifica o uso.
- Design desnormalizado: Em um esquema em estrela, os dados relacionados são armazenados juntos em uma tabela usando uma abordagem desnormalizada. Por exemplo, uma tabela de produtos pode incluir o ID, o nome e a categoria do produto no mesmo local. Embora isso possa significar alguma repetição de dados, ele processa as consultas mais rapidamente.
- Comum em data warehousing: O esquema em estrela é usado para uma análise rápida. Ele pode filtrar ou calcular totais com facilidade, portanto, é provavelmente uma boa opção para data warehouses em que são necessários insights rápidos.
Vamos entender isso com um diagrama simples de esquema em estrela. Atabela de fatos Sales
está no centro. Ele contém os dados numéricos que você deseja analisar, como vendas ou lucros. Conectadas a ela estãoas tabelas de dimensão com detalhes descritivos, como nomes de produtos, localização do cliente ou datas:
Exemplo de esquema em estrela. Imagem do autor.
Aqui você encontra um exemplo simples de SQL para configurar um esquema em estrela com uma tabela de fatos e tabelas de dimensões para Sales
e tabelas de dimensão para Product
, Customer
, e Date
:
-- Fact table
CREATE TABLE Sales (
Sales_ID INT PRIMARY KEY,
Product_ID INT,
Customer_ID INT,
Date_ID INT,
Sales_Amount DECIMAL(10, 2),
FOREIGN KEY (Product_ID) REFERENCES Product(Product_ID),
FOREIGN KEY (Customer_ID) REFERENCES Customer(Customer_ID),
FOREIGN KEY (Date_ID) REFERENCES Date(Date_ID)
);
-- Dimension table: Product
CREATE TABLE Product (
Product_ID INT PRIMARY KEY,
Product_Name VARCHAR(100),
Category VARCHAR(50)
);
-- Dimension table: Customer
CREATE TABLE Customer (
Customer_ID INT PRIMARY KEY,
Customer_Name VARCHAR(100),
Location VARCHAR(50)
);
-- Dimension table: Date
CREATE TABLE Date (
Date_ID INT PRIMARY KEY,
Date DATE,
Year INT,
Month VARCHAR(20)
);
Esse layout acelera as consultas porque não há junções complexas. Por exemplo, a consulta a seguir recupera o total de vendas agrupadas por local do cliente, aproveitando as uniões simples do esquema em estrela:
SELECT c.Location, SUM(s.Sales_Amount) AS TotalSales
FROM Sales s
JOIN Customer c ON s.Customer_ID = c.Customer_ID
GROUP BY c.Location;
No entanto, você teria que aceitar alguma redundância de dados, pois as tabelas de dimensão podem conter informações repetidas.
Vantagens e limitações de um esquema em estrela
Agora que você sabe o que é o esquema estrela, vamos ver por que ele se destaca:
- Desempenho de consulta mais rápido: O esquema em estrela simplifica a recuperação de dados, tornando as consultas mais rápidas. Por exemplo, se eu quiser analisar as tendências de vendas, juntarei a tabela de fatos com as tabelas de dimensão corretas. E a melhor parte é que farei tudo isso sem lidar com relacionamentos complexos. Isso tornaria minhas consultas mais rápidas e me pouparia muito tempo.
- Fácil de entender: Sua estrutura é lógica e simples de entender, mesmo para usuários não técnicos. Os novos membros da equipe podem entender rapidamente quais tabelas contêm os dados de que precisam, acelerando a análise e simplificando a manutenção.
Apesar de todos os benefícios, o esquema em estrela tem uma desvantagem. Como mencionei anteriormente, devido à desnormalização, as tabelas de dimensão geralmente contêm informações repetidas, o que aumenta o uso do armazenamento. Por exemplo, se vários produtos pertencerem à mesma categoria, o nome de cada produto poderá se repetir, ocupando mais espaço de armazenamento.
O que é um esquema Snowflake?
Um esquema de floco de neve é outra forma de organizar os dados. Nesse esquema, as tabelas de dimensão são divididas em subdimensões menores para manter os dados mais organizados e detalhados, como flocos de neve em um grande lago.
Layout do esquema Snowflake. Imagem do autor.
Vamos examinar os principais recursos do esquema snowflake que o tornam diferente de outros esquemas:
- Tabelas de dimensão multinível: Podemos dividir nossas tabelas de dimensões em tabelas menores e mais específicas. Por exemplo, se eu quiser rastrear os locais das lojas, em vez de colocar todos os detalhes de localização em uma grande tabela, posso dividi-los em tabelas separadas para países, estados e cidades. Dessa forma, cada tabela conteria apenas as informações necessárias para reduzir a redundância e melhorar a organização.
- Normalização para eficiência de armazenamento: Ao contrário do esquema em estrela, o esquema floco de neve permite um design normalizado, o que evita a duplicação de dados. Por exemplo, em vez de repetir uma categoria de produto como
Electronics
para cada produto, posso armazenar a categoria em uma tabela separada e vinculá-la a produtos individuais. - Adequação para ambientes de dados complexos: O esquema snowflake funciona melhor em ambientes de dados complexos porque usa tabelas de vários níveis para lidar com relacionamentos complexos e estruturas de dados hierárquicas.
Vamos entender isso com um diagrama simples de esquema de floco de neve. No centro está a tabela de fatos, que contém dados mensuráveis. Ela se conecta a tabelas de dimensão que descrevem os fatos, e essas tabelas de dimensão se ramificam ainda mais em tabelas de subdimensão, formando uma estrutura semelhante a um floco de neve.
Por exemplo, aqui eu dividi a tabela Product
em Manufacturer
e Category
e atabela Customer
em Transaction
e Location
:
Exemplo de esquema Snowflake. Imagem do autor.
Aqui está um exemplo de SQL que ilustra um esquema snowflake em que a tabela Product
é normalizada ainda mais em Category
e Manufacturer
tabelas:
-- Fact table remains the same
CREATE TABLE Sales (
Sales_ID INT PRIMARY KEY,
Product_ID INT,
Customer_ID INT,
Date_ID INT,
Sales_Amount DECIMAL(10, 2),
FOREIGN KEY (Product_ID) REFERENCES Products(Product_ID),
FOREIGN KEY (Customer_ID) REFERENCES Customers(Customer_ID),
FOREIGN KEY (Date_ID) REFERENCES Dates(Date_ID)
);
-- Dimension table: Product
CREATE TABLE Product (
Product_ID INT PRIMARY KEY,
Product_Name VARCHAR(100),
Category_ID INT,
Manufacturer_ID INT,
FOREIGN KEY (Category_ID) REFERENCES Category(Category_ID),
FOREIGN KEY (Manufacturer_ID) REFERENCES Manufacturer(Manufacturer_ID)
);
-- Sub-dimension table: Category
CREATE TABLE Category (
Category_ID INT PRIMARY KEY,
Category_Name VARCHAR(50)
);
-- Sub-dimension table: Manufacturer
CREATE TABLE Manufacturer (
Manufacturer_ID INT PRIMARY KEY,
Manufacturer_Name VARCHAR(100)
);
A consulta a seguir calcula o total de vendas por categoria de produto. Embora envolva mais uniões do que o esquema em estrela, ele é mais eficiente em termos de armazenamento:
SELECT cat.Category_Name, SUM(s.Sales_Amount) AS TotalSales
FROM Sales s
JOIN Product p ON s.Product_ID = p.Product_ID
JOIN Category cat ON p.Category_ID = cat.Category_ID
GROUP BY cat.Category_Name;
Vantagens e limitações de um esquema de floco de neve
Assim como o esquema de estrela, o esquema de floco de neve também tem suas próprias vantagens. Vamos ver quais são elas:
- Menos redundância de dados: A normalização garante que os mesmos dados não sejam armazenados várias vezes, o que reduz a duplicação.
- Armazenamento eficiente para grandes conjuntos de dados: Esse esquema economiza espaço de armazenamento ao evitar dados repetidos, o que o torna ideal para gerenciar grandes conjuntos de dados.
No entanto, apesar de suas vantagens, também existem algumas limitações. Por exemplo,as consultas em podem ser mais lentas porque há mais uniões entre tabelas. Além disso, a estrutura multinível é mais desafiadora para projetar e manter do que esquemas mais simples, como o esquema em estrela. Portanto, opte por isso somente se você tiver uma equipe de DBA experiente.
Recomendo que você confira o curso Database Design se quiser saber mais sobre como estruturar dados de forma eficiente para análise.
Diferenças entre o esquema estrela e o esquema floco de neve
Os esquemas estrela e floco de neve são amplamente usados no armazenamento de dados, mas suas características exclusivas os tornam adequados para diferentes necessidades. Vamos ver como esses esquemas diferem em termos de estrutura, desempenho, requisitos de armazenamento e casos de uso.
Estrutura
Todas as tabelas de dimensão se conectam diretamente a uma tabela de fatos central em um esquema em estrela. Isso significa que todos os seus dados de referência estão a um passo de distância dos dados principais, facilitando a compreensão e o trabalho com eles.
Em comparação, um esquema snowflake divide as tabelas de dimensão em tabelas de subdimensão menores e mais específicas. Por exemplo, você pode ter tabelas separadas para países, estados e cidades em vez de uma tabela de localização. Embora isso crie uma estrutura mais organizada e detalhada, também significa que são necessárias mais conexões (ou junções) para acessar seus dados - um dos principais motivos pelos quais o esquema snowflake é mais complexo do que o esquema estrela.
Desempenho
Quando se trata de velocidade, os esquemas em estrela são melhores. Como todas as tabelas de dimensão se conectam diretamente à tabela de fatos, as consultas exigem menos uniões, o que significa um desempenho mais rápido. Digamos que você queira analisar as vendas por região - nesse caso, você pode usar o esquema em estrela para recuperar os dados com o mínimo de processamento.
Por outro lado, os esquemas Snowflake são mais lentos porque você precisa se conectar a várias tabelas para recuperar os dados. Cada junção acrescenta tempo de processamento, tornando os esquemas snowflake menos eficientes para tarefas que exigem resultados de consulta rápidos.
O curso Joining Data in SQL é uma excelente cartilha para você aprender a unir tabelas, aplicar a teoria dos conjuntos relacionais e trabalhar com subconsultas.
Requisitos de armazenamento
Os esquemas em estrela ocupam mais espaço de armazenamento porque armazenam informações redundantes nas tabelas de dimensão. Por exemplo, se vários produtos pertencerem à mesma categoria, o nome da categoria será repetido para cada produto, aumentando a necessidade de armazenamento.
No entanto, os esquemas snowflake normalizam os dados para armazenar todas as informações apenas uma vez. Por exemplo, em vez de repetir os nomes das categorias, eles são armazenados em uma tabela separada e vinculados à tabela de produtos usando chaves estrangeiras. Esse design economiza espaço de armazenamento, tornando-o ideal para grandes conjuntos de dados.
Casos de uso
Os esquemas em estrela são ideais para sistemas de processamento analítico on-line (OLAP), relatórios e tarefas de business intelligence. Sua simplicidade os torna perfeitos para cenários em que a velocidade e a facilidade de uso são importantes, como a geração rápida de painéis de controle ou relatórios de vendas.
Os esquemas Snowflake são frequentemente usados para análise financeira ou sistemas de gerenciamento de relacionamento com o cliente (CRM). Nesses casos, a organização de hierarquias detalhadas e a economia de espaço de armazenamento são mais importantes do que a velocidade de consulta.
Quando usar um esquema em estrela
Se você deseja principalmente organizar seus dados de forma simples e rápida, o esquema em estrela seria perfeito. Veja quando você pode usá-lo:
- Se você quiser executar consultas simples, como encontrar o total de vendas por região, use o esquema em estrela. Como todas as tabelas de dimensão se conectam diretamente à tabela de fatos, isso evita complexidade desnecessária e fornece respostas mais rapidamente.
- Você pode até usar o esquema em estrela quando a velocidade for sua prioridade. Ele minimiza o número de uniões de tabelas, para que suas consultas sejam executadas mais rapidamente. Usei-o uma vez para gerar vários relatórios de vendas, o que me poupou muito tempo em comparação com outros designs.
- Se o seu conjunto de dados for pequeno ou médio, a redundância do esquema em estrela não será um problema. Mesmo com dados repetidos, ele funcionaria bem sem sobrecarregar seu armazenamento.
Quando usar um esquema Snowflake
O esquema Snowflake é mais adequado para lidar com atualizações frequentes ou organizar hierarquias detalhadas. Veja quando você pode usá-lo:
- Use o esquema snowflake se você trabalha com grandes conjuntos de dados e deseja economizar espaço de armazenamento. Ele normaliza as tabelas de dimensão para evitar dados repetidos, o que reduz os requisitos de armazenamento.
- Você pode até mesmo usar o esquema snowflake se seus dados forem alterados com frequência, como a atualização de nomes de regiões. Ele mantém atualizações consistentes em todos os dados relacionados para minimizar erros e esforços de manutenção.
- Se a sua análise envolver vários níveis de dados, o esquema snowflake pode ajudar você a organizar e representar essas relações de forma simples.
Tabela de resumo: Esquema em estrela versus esquema em estrela Esquema Snowflake
Aqui está uma comparação rápida dos esquemas estrela e floco de neve para ajudar você a decidir qual é o mais adequado às suas necessidades de dados. Destaquei as principais diferenças nesta tabela, concentrando-me em sua estrutura, desempenho, armazenamento e casos de uso:
Recurso |
Esquema de estrela |
Esquema de floco de neve |
Estrutura |
Tabela de fatos central ligada a dimensões desnormalizadas |
Tabela de fatos central ligada a dimensões normalizadas |
Complexidade |
Simples, com menos junções |
Complexo, com mais uniões |
Redundância de dados |
Maior redundância devido às dimensões desnormalizadas |
Menor redundância devido às dimensões normalizadas |
Desempenho da consulta |
Consultas mais rápidas devido à estrutura mais simples |
Consultas mais lentas devido a uniões adicionais |
Armazenamento |
Requer mais armazenamento devido à redundância |
Requer menos armazenamento devido à normalização |
Facilidade de manutenção |
Mais fácil de projetar e manter |
Mais complexo para projetar e manter |
Mais adequado para |
Conjuntos de dados de pequeno e médio porte |
Conjuntos de dados grandes e complexos |
Considerações finais
Neste blog, abordei as diferenças entre os esquemas estrela e floco de neve, seus pontos fortes e quando você deve usar cada um deles. Espero que você tenha uma compreensão clara e dicas práticas para o seu trabalho! Se você quiser saber mais, confira estes recursos no DataCamp:
- O curso Introdução à modelagem de dados no Snowflake ajudará você a construir suas bases para trabalhar com o Snowflake.
- O curso Modelagem de dados no Power BI para você organizar e gerenciar dados no Power BI.
- O Associate Data Engineer em SQL é o caminho para você levar suas habilidades em SQL para o próximo nível.
Torne-se um engenheiro de dados
Perguntas frequentes
Qual é a finalidade da indexação nesses esquemas?
A indexação melhora o desempenho da consulta em ambos os esquemas, tornando a recuperação de dados mais rápida.
O que significa tabelas de dimensão e tabelas de fatos?
As tabelas de dimensão armazenam atributos descritivos (como nomes de produtos ou datas) que descrevem os dados na tabela de fatos.
Por outro lado, as tabelas de fatos armazenam dados quantitativos, como números de vendas ou valores de transações, e se conectam a tabelas de dimensões.
Esses esquemas são adequados para dados não estruturados?
Não, esses esquemas são projetados para dados estruturados. Os dados não estruturados exigem modelos diferentes, como NoSQL ou lagos de dados.
Como posso criar esquemas de estrela e floco de neve?
Para criar e visualizar esses esquemas, você pode usar ferramentas de modelagem de dados (ERDPlus), ferramentas de BI (Tableau, Power BI, QlikView) ou plataformas de nuvem (Databricks).
Você tem alguma alternativa aos esquemas de estrela e floco de neve?
Sim, você pode usar esquemas do Galaxy, modelagem do Data Vault ou modelos dimensionais mais complexos. Essas opções diferem principalmente na organização dos dados e no tratamento das relações entre as diferentes informações.
Sou um estrategista de conteúdo que adora simplificar tópicos complexos. Ajudei empresas como Splunk, Hackernoon e Tiiny Host a criar conteúdo envolvente e informativo para seus públicos.
Saiba mais sobre engenharia de dados com estes cursos!
curso
Data Warehousing Concepts
curso
Database Design
blog
O que é um banco de dados gráfico? Um guia para iniciantes
blog
Processamento em lote versus processamento em fluxo: Quando usar cada um e por que é importante

Tim Lu
21 min

blog
11 técnicas de visualização de dados para cada caso de uso com exemplos

blog
Guia de casos de uso de ciência de dados
blog
Como analisar dados para sua empresa em 5 etapas
tutorial
Tutorial de visão geral do banco de dados SQL

DataCamp Team
3 min