Schneeflockenschema
Ein Schneeflockenschema (auch Snowflake-Schema) stellt in Data Warehouses ein spezielles Modell zur Darstellung von multidimensionalen Strukturen in Datenbanken dar, in der eine zentrale Faktentabelle immer von mehreren Dimensionstabellen umgeben ist. Damit erweitert das Schneeflockenschema das verwandte Sternschema. Während beim Sternschema die umgebenden Dimensionstabellen alle direkt mit der Faktentabelle verbunden sind, gibt es beim Schneeflockenschema mehrere Ebenen.
Snowflaking verbessert die Leistung von bestimmten Datenbankabfragen. Wie beim Sternschema wird die Faktentabelle von ihren zugehörigen Dimensionen umgeben. Diese Dimensionen werden aber durch andere Attribute und Dimensionen erweitert, die wiederum in einer eigenen Tabelle dargestellt sind. Durch diese weitere Verzweigung des Datenmodelles entsteht das Muster einer Schneeflocke.
Data Warehouses und Data Marts nutzen das Schneeflockenschema für spezifische Abfragen, da es beispielsweise die Leistung bei der Abfrage von Attributen mit wenigen enthaltenen Elementen erhöht, die unabhängig voneinander abgefragt werden. Auch Business-Intelligence-Anwendungen, die eine relationale OLAP (ROLAP) -Architektur verwenden, liefern eine besser Leistung ab, wenn das Data Warehouse auf dem Schneeflockenschema basiert.
Ein Sternschema speichert alle Attribute für eine Dimension in einer denormalisierten Tabelle, die mehr Speicherplatz benötigt als ein normalisiertes Schneeflockenschema. Snowflaking normalisiert die Dimension, indem es Attribute mit geringem Umfang (wenige unterschiedliche Werte) in separaten Dimensionstabellen darstellt, die über Fremdschlüssel eine Verbindung zur zentralen Dimensionstabelle herstellen. Es ist allerdings nicht zu empfehlen, das Schneeflockenschema ausschließlich für das Minimieren des Speicherplatzes zu nutzen, da es sich negativ auf die Abfrageleistung auswirken kann.
Hier drei Anwendungsszenarien für das Schneeflockenschema:
- Attribute mit wenigen Elementen, in denen die meisten in der Dimensionstabelle gespeicherten Attribute den Wert NULL erhalten, werden in eine untergeordnete Dimension übertragen.
- Attribute mit wenigen Elementen, die unabhängig voneinander abgefragt werden. Zum Beispiel kann eine Dimensionstabelle „Produkt“ Tausende von Produkten enthalten, aber nur sehr wenige Produkttypen. Verschiebt man das Attribut „Produkttyp“ in eine eigene Dimensionstabelle, verbessert sich die Leistung, da man die Produkttypen unabhängig abfragen kann.
- Attribute, die Teil einer Hierarchie sind und unabhängig voneinander abgefragt werden. Beispiele hierfür sind die Attribute „Jahr“, „Monat“ und „Quartal“ in einer Datums-Hierarchie oder die Attribute „Staat“ und „Bundesländer“ in einer geografischen Hierarchie.