Was ist eine Role playing Dimension?
Stell dir vor, du hast eine Datenbank mit Informationen über Verkäufe in einem Online-Shop. Du möchtest verschiedene Aspekte eines Verkaufs erfassen, wie z.B. das Datum der Bestellung, das Datum des Versands und das Datum der Lieferung.
Anstatt für jedes dieser Daten eine separate Dimensionstabelle zu erstellen (z.B. "Bestelldatum", "Versanddatum", "Lieferdatum"), kannst du eine einzige Dimensionstabelle "Datum" verwenden. Diese Tabelle enthält alle relevanten Informationen zu einem Datum, wie Tag, Monat, Jahr, Wochentag usw.
Diese eine "Datum"-Tabelle kann dann in deiner Faktentabelle "Verkäufe" verschiedene Rollen spielen:
- Bestelldatum: Verknüpft mit dem Datum, an dem die Bestellung aufgegeben wurde.
- Versanddatum: Verknüpft mit dem Datum, an dem die Bestellung versendet wurde.
- Lieferdatum: Verknüpft mit dem Datum, an dem die Bestellung beim Kunden ankam.
Beispiel:
Nehmen wir an, deine Faktentabelle "Verkäufe" enthält folgende Spalten:
- Verkaufs-ID
- Produkt-ID
- Kunden-ID
- Bestelldatum-ID
- Versanddatum-ID
- Lieferdatum-ID
- Menge
- Preis
Deine Dimensionstabelle "Datum" enthält:
- Datum-ID
- Tag
- Monat
- Jahr
- Wochentag
In diesem Beispiel spielt die Dimensionstabelle "Datum" drei verschiedene Rollen in der Faktentabelle "Verkäufe". Jede Rolle wird durch eine separate Fremdschlüsselspalte in der Faktentabelle repräsentiert (Bestelldatum-ID, Versanddatum-ID, Lieferdatum-ID).
Vorteile von Role playing Dimension:
- Reduzierte Redundanz: Du vermeidest die Duplizierung von Daten, da du dieselbe Dimensionstabelle für verschiedene Zwecke verwendest.
- Verbesserte Datenintegrität: Die Konsistenz der Daten wird gewährleistet, da alle Rollen auf dieselben Datumsinformationen zugreifen.
- Vereinfachte Wartung: Änderungen an der Dimensionstabelle "Datum" wirken sich automatisch auf alle Rollen aus.
- Bessere Abfrageleistung: Abfragen können effizienter ausgeführt werden, da weniger Joins benötigt werden.
Weitere Beispiele:
- Zeit: Kann Rollen wie "Bestellzeit", "Versandzeit", "Lieferzeit" spielen.
- Kunde: Kann Rollen wie "Käufer", "Verkäufer" spielen.
- Produkt: Kann Rollen wie "Bestelltes Produkt", "Versandtes Produkt", "Retourniertes Produkt" spielen.