# Schneeflockenschema

Das Schneeflockenschema ist eine Weiterführung des Sternschemas, das beim OLAP und Data-Warehousing eingesetzt wird.
Beim Sternschema liegen die Dimensionstabellen denormalisiert vor, was eine bessere Verarbeitungsgeschwindigkeit zu Lasten der Datenintegrität und des Speicherplatzes mit sich bringt. Im Gegensatz dazu werden beim Schneeflockenschema die einzelnen Dimensionstabellen verfeinert, indem sie klassifiziert oder normalisiert werden. Durch diese Weiterverzweigung des Datenmodells entsteht die Form einer Schneeflocke, woher die Bezeichnung dieses Entwurfsmusters stammt.
Bedingt durch diese feinere Strukturierung sind die Daten zwar weniger redundant als in einem Sternschema, es sind jedoch für Abfragen eventuell zusätzliche Join-Operationen notwendig. Ein Schneeflockenschema führt also zu kleineren und besser strukturierten Datenmengen, die aber komplexere Zusammenhänge haben und damit unter Umständen zu längeren Lade- oder Abfragezeiten führen.

## Definition

Das Schneeflockenschema ist eine Weiterführung des Sternschemas. Bei diesem bleibt die Faktentabelle wie beim Sternschema analog. Jedoch sind im Gegensatz zum Sternschema die Dimensionstabellen differierend, denn diese enthalten nicht mehr alle Dimensionselemente, sondern nur Daten über die Dimensionshierarchien. Die Dimensionen werden dafür weiter verfeinert, indem sie klassifiziert oder normalisiert werden. Jedenfalls werden die Dimensionstabellen dabei um die Attribute erweitert, damit jede Ausprägung einer Dimension in einer eigenen Tabelle dargestellt werden kann. D.h. beim verbreiteten Schneeflockenschema werden die Daten in den Dimensionstabellen in der 3. Normalform (3NF) gespeichert. Durch die Normalisierung entsteht für jede Hierarchiestufe einer Dimension eine eigene Tabelle und führt demnach zu kleineren und besser strukturierten Datenmengen. Durch diese Weiterverzweigung des Datenmodells entsteht die Form einer Schneeflocke, was diesem Schema den Namen verleiht.

## Eigenschaften

* Dimensionentabellen
** Primärschlüssel zur Identifizierung der Dimensionenwerte
** Abbildung der Dimensionenhierarchie durch Fremdschlüssel
** Normalisierung
* Faktentabellen (gleich mit Sternschema)
** Fremdschlüssel zu den Dimensionentabellen, d. h. die unterste Ebene jeder Dimension wird als Schlüssel in die Faktentabelle aufgenommen
** Fremdschlüssel auf die Dimensionen bilden zusammengesetzten Primärschlüssel für die Fakten

## Vor- und Nachteile

Folgend werden die Vor- und Nachteile des Schneeflockenschemas im Vergleich zum einfacheren Sternschema aufgezeigt:

### Vorteile

* geringerer Speicherplatzverbrauch: Dimensionentabellen enthalten durch Normalisierung keine redundanten Daten.
* n:m-Beziehungen zwischen Aggregationsstufen können über Relationstabellen aufgelöst werden
* optimale Unterstützung der Aggregationsbildung
* Browsing-Funktionalität: häufige Abfragen über sehr große Dimensionstabellen erbringen Zeitersparnis und Geschwindigkeitsvorteil.

### Nachteile

* Geschwindigkeitsnachteil: Bedingt durch zusätzliche Verbunde bei den Dimensionstabellen
* Komplexere Strukturierung: Bedingt durch die feinere Strukturierung sind die Daten zwar weniger redundant als in einem Sternschema, die Zusammenhänge sind jedoch komplexer. Mehrstufige Dimensionstabellen müssen deshalb wieder über Join-Abfragen verknüpft werden und können unter Umständen zu längeren Abfragezeiten führen.
* größere Tabellenanzahl: Durch die komplexere Strukturierung wird eine größere Anzahl an Tabellen benötigt.
* Reorganisationsproblem: Änderungen im semantischen Modell führen zu umfangreicher Reorganisation der Tabellen und folglich zu einem höheren Wartungsaufwand

## Sternschema vs. Schneeflockenschema (normalisiert)

| | Sternschema | Schneeflockenschema |
| Ziel | Benutzerfreundliche Abfrage (Aggregatszugriff; einfaches, intuitives Datenmodell) | Redundanzminimierung durch Normalisierung Effiziente Transaktionsverarbeitung |
| Ergebnis | Einfaches, lokales und standardisiertes Datenmodell eine Faktentabelle und wenige Dimensionstabellen | Komplexes und spezifisches Schema Viele Entitäten und Beziehungen bei großen Datenmodellen |

## Beispiel

Das nebenstehende Beispiel zeigt die verknüpften Tabellen, welche für eine vollständige Beschreibung der Produkt Dimension im Microsoft Datawarehouse-Beispielprojekt Adventure Works notwendig sind. Kategorie und Unterkategorie des Produkts in der Product-Dimension müssen demnach enthalten sein. Diese Informationen befinden sich jedoch nicht direkt in der Haupttabelle für die Produkt-Dimension, aber eine Fremdschlüsselbeziehung zwischen Produkt-Dimension und Produkt Unterkategorie-Dimension, die wiederum eine Fremdschlüsselbeziehung zur Produkt Kategorie-Tabelle hat, ermöglicht das Einschließen der Informationen für Produktkategorien und -unterkategorien in der Dimensionstabelle des Produktes.
Die Anzahl der verwendeten Joins steigt beim Schneeflockenschema im Gegensatz zum Sternschema linear mit Anzahl der Aggregationspfade.