Das Snowflake-Schema ist ein Bauplan, wie Daten in einem Data Warehouse (zentraler Datenspeicher für Auswertungen) angeordnet werden. Im Kern steht eine Fakten-Tabelle mit den Geschäftszahlen (zum Beispiel Verkäufe), umgeben von Dimensionstabellen mit den erklärenden Merkmalen (Kunde, Produkt, Zeit). Anders als beim verwandten Star-Schema werden diese Merkmalstabellen aufgetrennt und über Verweise miteinander verbunden, sodass das Diagramm optisch an eine Schneeflocke erinnert. Der Ansatz geht auf die dimensionale Modellierung nach Ralph Kimball zurück.
Was ist ein Snowflake-Schema?
Ein Snowflake-Schema ist ein Ordnungs-Muster für die Auswertungs-Schicht eines Data Warehouse (zentraler Datenspeicher für Reports und Analysen). Im Zentrum liegt eine Fakten-Tabelle mit den messbaren Geschäftsereignissen (Verkauf, Bestellung, Buchung, Klick). Darum herum liegen Dimensionstabellen, die den Kontext dazu liefern (welcher Kunde, welches Produkt, wann, wo). Der Unterschied zum Star-Schema liegt in der Struktur dieser Dimensionen: Statt einer breiten Merkmals-Tabelle pro Dimension wird jede Dimension in mehrere kleinere Tabellen aufgeteilt, die über Verweise (Fremdschlüssel) miteinander verbunden sind. Merkmale, die in klaren Hierarchien stehen (Produkt gehört zu Kategorie, Kategorie gehört zu Sortiment), wandern in eigene Unter-Tabellen.
Eine Produkt-Dimension in einem Star-Schema führt Produktname, Produktkategorie, Produktgruppe und Sortiment als flache Spalten in dim_produkt. Dasselbe Modell im Snowflake-Schema zerlegt die Hierarchie: dim_produkt referenziert dim_produktkategorie, das wiederum dim_produktgruppe referenziert. Das Ergebnis ist ein Baum aus normalisierten Tabellen, dessen ER-Diagramm optisch an eine Schneeflocke erinnert.
Der Begriff stammt aus der klassischen dimensionalen Modellierung nach Ralph Kimball. Kimball behandelt das Snowflake-Schema als Design-Variante des Star-Schemas, die dann eingesetzt wird, wenn eine Dimension sehr breit ist, viele wiederholte Attribut-Werte enthält oder sich Attribute in klaren Hierarchien gliedern lassen. Die Motivation ist historisch: Storage war teuer, Query-Optimizer waren begrenzt und Redundanz in Dimensionstabellen erschwerte konsistente Updates. In modernen Column-Store-Warehouses und Lakehouse-Plattformen hat sich das Kosten-Nutzen-Verhältnis verschoben, weil Spaltenkompression Redundanz billig macht und die zusätzlichen Joins die Query-Kosten stärker erhöhen als die eingesparte Speicherredundanz.
Das Snowflake-Schema bleibt in bestimmten Konstellationen praxisrelevant. Große Dimensionen mit tiefen Attribut-Hierarchien (mehrstufige Produkt- oder Organisations-Klassifikationen), Dimensionen mit vielen Slowly-Changing-Attributen auf unterschiedlichen Änderungs-Frequenzen und Referenzdaten-Dimensionen, die aus operativen Systemen normalisiert übernommen werden, sind typische Einsatzfelder. Für die Standard-Fakten-Auswertung bleibt das Star-Schema die einfachere Wahl.
Abgrenzung zu Star-Schema, Galaxy-Schema, One Big Table und dem Snowflake-Produkt
Der Begriff wird in Praxis-Diskussionen häufig mit vier verwandten Konzepten vermischt: mit dem Star-Schema als Ausgangs-Muster, mit dem Galaxy-Schema als Mehr-Fakten-Variante, mit One Big Table als Gegenextrem und mit dem gleichnamigen Cloud-Data-Warehouse-Produkt der Snowflake Inc.
| Begriff | Achse | Kernunterschied |
|---|---|---|
| Star-Schema | Normalisierungsgrad | Denormalisierte Dimensionen als flache Tabellen. Weniger Joins, einfacher für BI-Anwender und Semantic-Layer, höherer Speicherverbrauch. Das Star-Schema ist die Ausgangs-Form; das Snowflake-Schema ist seine normalisierte Variante. |
| Galaxy-Schema (Fact Constellation) | Anzahl der Fakten | Mehrere Fakten-Tabellen teilen sich Conformed Dimensions. Orthogonale Achse zum Normalisierungsgrad: Ein Galaxy-Modell kann sowohl Star- als auch Snowflake-förmige Dimensionen enthalten. |
| One Big Table (OBT) | Normalisierungsgrad | Alle Attribute in einer breiten, extrem denormalisierten Tabelle ohne getrennte Dimensionen. Typisches Lakehouse-Muster mit Column-Store und semantischer Schicht darüber. Das Gegenextrem zum Snowflake-Schema. |
| Snowflake (Snowflake Inc.) | Namensgleichheit | Cloud-Data-Warehouse-Produkt, kein Modellierungsmuster. Auf Snowflake, BigQuery, Databricks SQL oder Teradata lässt sich sowohl ein Star- als auch ein Snowflake-Schema umsetzen; das Produkt und das Modellierungsmuster sind unabhängig voneinander. |
Die wichtigste Abgrenzung verläuft zwischen Star-Schema und Snowflake-Schema. Beide Muster stammen aus der Kimball-Familie und teilen dieselbe Grundstruktur (Fakten-Tabelle im Zentrum, Dimensionstabellen darum herum). Sie unterscheiden sich ausschließlich im Normalisierungsgrad der Dimensionen. Der Trade-off ist klar: Das Snowflake-Schema spart Speicher und vereinfacht Attribut-Wartung in großen Dimensionen, kostet aber Query-Performance durch zusätzliche Joins und Lesbarkeit für BI-Anwender. Das Star-Schema kehrt beide Vorzeichen um.
Die zweite häufige Verwechslung betrifft das Modellierungsmuster und das gleichnamige Produkt. Snowflake Inc. ist ein Anbieter eines Cloud-Data-Warehouse-Dienstes. Das Snowflake-Schema als Modellierungsmuster existiert seit den 1990er-Jahren und ist unabhängig vom Produkt. Beide Bedeutungen laufen im gleichen Fachkontext zusammen, was in Gesprächen und Suchergebnissen zu Verwechslungen führt.
Beispiel: Produkt-Dimension in einem Handels-Warehouse
Ein Handelsunternehmen führt ein Data Warehouse mit einer Fakten-Tabelle fact_verkauf (Milliarden Zeilen: Datum, Filiale, Produkt, Menge, Umsatz) und einer Produkt-Klassifikation mit vier Ebenen: Produkt, Kategorie, Gruppe, Sortiment. Modelliert als Star-Schema, hält dim_produkt alle vier Ebenen als flache Spalten:
| produkt_sk | produkt_id | produkt_name | kategorie | gruppe | sortiment |
|---|---|---|---|---|---|
| 4711 | P-4711 | Vollkornbrot | Backwaren | Brot | Food |
| 4712 | P-4712 | Weizenmehl 1 kg | Backzutaten | Grundnahrung | Food |
Modelliert als Snowflake-Schema, wird die Hierarchie zerlegt:
| Tabelle | Spalten |
|---|---|
| dim_produkt | produkt_sk, produkt_id, produkt_name, kategorie_sk |
| dim_kategorie | kategorie_sk, kategorie_name, gruppe_sk |
| dim_gruppe | gruppe_sk, gruppe_name, sortiment_sk |
| dim_sortiment | sortiment_sk, sortiment_name |
Eine Auswertung „Umsatz je Sortiment" erfordert im Star-Schema einen Join zwischen fact_verkauf und dim_produkt. Im Snowflake-Schema führt dieselbe Abfrage über vier Joins (fact_verkauf → dim_produkt → dim_kategorie → dim_gruppe → dim_sortiment). Der Speicher-Vorteil entsteht auf der anderen Seite: Wird der Sortimentsname geändert („Food" wird zu „Lebensmittel"), reicht ein Update in dim_sortiment. Im Star-Schema müsste jede Zeile in dim_produkt mit demselben Sortimentsnamen einzeln aktualisiert werden.
Für BI-Werkzeuge wie Power BI oder Tableau ist das Snowflake-Modell schwerer greifbar, weil die Attribut-Hierarchie über mehrere Tabellen läuft. Praxisübliche Kompromisse sind Views, die das Snowflake-Modell für die Endanwender wieder zu einem flachen Star-Schema abflachen, oder eine semantische Schicht darüber, die die Joins vor dem Anwender verbirgt.
Snowflake-Schema im eigenen Unternehmen umsetzen?
Wir zeigen, wie sich das in deiner Systemlandschaft konkret abbilden lässt.
das Ausgangs-Muster, aus dem das Snowflake-Schema durch Normalisierung der Dimensionen abgeleitet wird
Dimensionale Modellierung im LakehouseEntscheidungs-Frame Kimball vs. Data Vault vs. 3NF vs. Wide-Table
One Big TableGegenextrem im Lakehouse: denormalisierte Wide-Tables statt normalisierter Dimensionen
Data VaultAlternative zum dimensionalen Modell mit Hub-Link-Satellite-Muster
Data Warehouse auf DatabricksWarehouse-Layer im Lakehouse, in dem Snowflake- und Star-Schemata umgesetzt werden
Data WarehouseArchitektur-Kontext, in dem dimensionale Modelle leben
Slowly Changing DimensionsHistorisierungs-Muster für Dimensionen im Star- und Snowflake-Schema
Data Martfachbereichsspezifischer Ausschnitt eines Warehouse, häufig mit Star- oder Snowflake-Modell
OLAPWorkload-Profil, für das dimensionale Schemata optimiert sind