To KEY, or not to KEY!

Muss einen Primärschlüssel auf Faktentabelle definiert werden? Wenn „Ja“, welcher?

Es gibt drei Möglichkeiten:

  1. Kein Primärschlüssel.
    • + Verwaltung vom Primärschlüssel entfällt komplett, dadurch bester Durchsatz bei DML Operationen.
    • + Optimale Speicherplatzausnutzung.
    • Einzelne Fakten können eventuell nicht adressiert werden (über ROWID im Oracle oder CTID im PostgreSQL usw.).
    • Eindeutigkeit von Fakten nicht gewährleistet.
  2. Surrogatschlüssel generiert von einer Sequenz.
    • + Erlaubt schnelle und eindeutige Identifikation von Fakten, kann für ETL Prozesse gebraucht werden.
    • + Schlüssel ist relative kompakt.
    • + Schlüssel ist nicht gebunden an dimensionale Attribute, erlaubt Reorganisation der Faktentabelle.
    • Zusätzlicher Attribut in der Faktentabelle (ID).
    • Hohe Verwaltungskosten für Primärschlüssel und Eindeutigen Index. (globaler B-Tree Index)
    • Kann nicht partitioniert werden.
  3. Zusammengesetzter Primärschlüssel aus allen dimensionalen Attribute.
    • + Primärschlüssel garantiert logische Integrität von Fakten.
    • + Erlaubt eindeutige Identifikation von Fakten.
    • + Kann partitioniert werden (muss dafür alle Partitionierungs-Attribute enthalten).
    • Schlüssel wird sehr groß, vergleichbar mit der Faktentabelle.
    • Hohe Verwaltungskosten.
    • Um ein Fakt zu Adressieren müssen alle dimensionalen Attribute angegeben werden.

Weitere Überlegungen:

Nach Dimensionalem-Modell ist ein Primärschlüssel auf einer Faktentabelle nicht nötig. Es kann ein UNIQUE CONSTRAINT bestehend aus allen dimensionalen Attribute verwendet werden, um die logische Integrität zu gewährleisten (Eindeutigkeit von Fakten).

Primärschlüssel kann für Materialisierte-Sichten gebraucht werden. Zum Beispiel, im Oracle DB nach der Reorganisation von Fakten Tabelle ohne Primärschlüssel kann ein FAST REFRESH nicht stattfinden, es wird zwangsläufig ein COMPLEATE REFRESH durchgeführt.

Kimball über Primär Schlüssel auf Faktentabellen.

Veröffentlicht in Oracle