Pular para o conteúdo principal

Esquema em estrela versus esquema em floco de neve: Diferenças e casos de uso

Este guia detalha os esquemas estrela e floco de neve, duas formas comuns de organizar os dados em depósitos. Você aprenderá como eles funcionam, como são diferentes e quando usar cada um para atender às suas necessidades de dados.
Actualizado 20 de jan. de 2025  · 20 min de leitura

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.

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 real de esquema em estrela.

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.

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 do mundo real do esquema de floco de neve.

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:

Torne-se um engenheiro de dados

Comprove suas habilidades como engenheiro de dados pronto para o trabalho.
Acelerar minha carreira 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.


Laiba Siddiqui's photo
Author
Laiba Siddiqui
LinkedIn
Twitter

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.

Temas

Saiba mais sobre engenharia de dados com estes cursos!

curso

Introduction to Data Engineering

4 hr
115.9K
Learn about the world of data engineering in this short course, covering tools and topics like ETL and cloud computing.
Ver DetalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado

blog

O que é um banco de dados gráfico? Um guia para iniciantes

Explore o intrincado mundo dos bancos de dados gráficos com nosso guia para iniciantes. Entenda as relações entre os dados, aprofunde-se na comparação entre bancos de dados relacionais e gráficos e explore casos de uso práticos.
Kurtis Pykes 's photo

Kurtis Pykes

11 min

blog

Processamento em lote versus processamento em fluxo: Quando usar cada um e por que é importante

Uma análise detalhada das diferenças entre o processamento em lote e em fluxo para pipelines de dados. Conheça as vantagens e desvantagens exclusivas de cada abordagem para aplicar as técnicas adequadas ao seu pipeline de dados.
Tim Lu's photo

Tim Lu

21 min

blog

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

Descubra as análises, técnicas e ferramentas mais populares para dominar a arte do assistente de visualização de dados
Javier Canales Luna's photo

Javier Canales Luna

12 min

Artificial Intelligence Concept Art

blog

Guia de casos de uso de ciência de dados

Conheça os casos de uso da ciência de dados e descubra como ela pode ser implementada em vários setores para impulsionar o crescimento e a tomada de decisões.
Elena Kosourova's photo

Elena Kosourova

16 min

blog

Como analisar dados para sua empresa em 5 etapas

Descubra as diferentes etapas para analisar dados e extrair valor deles, bem como os métodos e técnicas envolvidos no processo.
Javier Canales Luna's photo

Javier Canales Luna

14 min

tutorial

Tutorial de visão geral do banco de dados SQL

Neste tutorial, você aprenderá sobre bancos de dados em SQL.
DataCamp Team's photo

DataCamp Team

3 min

Ver maisVer mais