2009-05-08 18 views
2

Ich entwerfe die Fact- und Dimension-Tabellen für ein Data Warehouse, das derzeit SQL Server, SSIS und SSAS verwendet. Kann ich wirklich von der Programmierung der Beziehungen zwischen den Dimensionen und den Faktentabellen in SQL profitieren? Oder ist es besser, die Beziehungen manuell zu definieren, wenn es Zeit ist, die Würfel zu erstellen?Gibt es einen Vorteil, wenn Sie Beziehungen in Ihr Star-Schematabellen-Design aufnehmen möchten?

Es scheint einfacher zu sein, die Daten zu laden und zu transformieren, wenn ich keine Einschränkungen für meine Dateneinfügung in die Tabellen habe und daher die Beziehungen weglasse.

Antwort

6

Ich interpretiere "Programmierung der Beziehungen" als Bedeutung, um Fremdschlüssel Einschränkungen auf den Tabellen zu setzen.

Nein, in einem Data Warehouse sollten Sie den Faktentabellen keine Primärschlüssel- oder Fremdschlüsseleinschränkungen auferlegen.

Sie haben einige Probleme erwähnt, und ein weiteres Problem besteht darin, dass diese Einschränkungen beim Einfügen von Zeilen einen Leistungsaufwand verursachen, wodurch der ETL-Prozess teurer wird.

Für jemanden, der nur Erfahrung mit Transaktionsdatenbanken hat, könnte dies gegen alles gerichtet sein, was er gelernt und erlebt hat. Fremdschlüsseleinschränkungen sind für Datenbanken wichtig, bei denen mehrere Prozesse gleichzeitig Daten ändern. Es besteht ein gewisses Risiko, dass zwei Prozesse trotz größter Bemühungen der Entwickler irgendwie die Daten vermasseln. Die Einschränkungen sind ein grundlegend wichtiges Sicherheitsnetz.

In einem dimensionalen Modell wird die Datenbank nur durch den einen ETL-Prozess und in einer streng kontrollierten Weise ausgefüllt. Dadurch wird das Risiko einer Beschädigung der Daten erheblich reduziert, bis zu dem Punkt, an dem sich die zusätzlichen Kosten von Einschränkungen nicht lohnen.

+0

Perfekte Antwort! Vielen Dank! – rrydman

1

Ich denke, wir müssen FK Constraints haben, da Updates auf DW 'meist' kontrolliert werden, aber nicht immer. Zum Beispiel werden manuelle Datenkorrekturen im Falle von Datenproblemen und dergleichen durchgeführt. [Idealerweise muss das nicht passieren, aber ... :)]

Um sicherzustellen, dass die Schlüssel die Leistung nicht beeinträchtigen, können wir sie vor dem Laden deaktivieren und sie wieder aktivieren. Dies kann uns die Gewissheit geben, dass die Daten richtig sind und auch jegliche Performance-Probleme während des Ladens beseitigen. Eine andere Sache, an die Sie sich erinnern sollten, ist, dass die Verarbeitungszeiten für die meisten Data Warehouses keine große Einschränkung darstellen.

Wenn Sie die Zeit in Betracht ziehen, die benötigt wird, um potenzielle Probleme mit der Datenintegrität zu beheben, lohnt sich FK.