Sind in einem Sternschema Fremdschlüsseleinschränkungen zwischen Fakten und Dimensionen erforderlich?

7

Ich bekomme meine erste Auseinandersetzung mit Data Warehousing, und ich frage mich, ob es notwendig ist, Fremdschlüssel zwischen Fakten und Dimensionen zu haben. Gibt es irgendwelche großen Nachteile, wenn man sie nicht hat? Ich arbeite derzeit mit einem relationalen Sternschema. In traditionellen Anwendungen bin ich es gewohnt, sie zu haben, aber ich begann mich zu fragen, ob sie in diesem Fall benötigt wurden. Ich arbeite derzeit in einer SQL Server 2005-Umgebung.

UPDATE: Für Interessierte stieß ich auf eine Umfrage , die dieselbe Frage stellte.

    
Garett 12.05.2010, 13:54
quelle

7 Antworten

14

In den meisten Data-Warehouses (DW) sind keine Fremdschlüssel als Einschränkungen implementiert, weil:

  • Im Allgemeinen würde die Fremdschlüsseleinschränkung ausgelöst: eine Einfügung in eine Faktentabelle, eine beliebige Schlüsselaktualisierung und ein Löschen aus einer Dimensionstabelle.

  • Beim Laden werden Indizes und Einschränkungen gelöscht, um den Ladevorgang zu beschleunigen. Die Datenintegrität wird von der ETL-Anwendung erzwungen.

  • Sobald Tabellen geladen sind, ist DW im Wesentlichen schreibgeschützt - die Beschränkung wird bei Lesevorgängen nicht ausgelöst.

  • Alle erforderlichen Indizes werden nach dem Laden neu erstellt.

  • Das Löschen in einem DW ist ein kontrollierter Prozess. Bevor Zeilen aus Dimensionen gelöscht werden, werden Faktentabellen nach Schlüsseln von zu löschenden Zeilen abgefragt - das Löschen ist nur erlaubt, wenn diese Schlüssel in keiner der Faktentabellen vorhanden sind.

Nur für den Fall ist es üblich, Abfragen regelmäßig auszuführen, um verwaiste Datensätze in Faktentabellen zu erkennen.

    
Damir Sudarevic 12.05.2010, 21:38
quelle
8

Wir benutzen sie und wir sind glücklich damit.

Ist Es ist eine gute Praxis, Fremdschlüssel in einem Datawarehouse (Beziehungen) zu haben?

Es gibt Overhead, aber Sie können die Constraint beim Laden immer deaktivieren und dann wieder aktivieren.

Wenn die Bedingung erfüllt ist, können ETL-Fehler und Modellierungsfehler auftreten.

    
Cade Roux 15.05.2010 02:30
quelle
3

Ich denke, theoretisch brauchen Sie das. Aber es hängt davon ab, wie Sie Ihre Daten über die Datenbank verteilen. Wenn alle Dateien in derselben Datenbank gespeichert sind, kann der Fremdschlüssel Ihnen helfen, da das Festlegen eines Fremdschlüssels der Datenbank dabei hilft, die Auswahl auf Basis der Indexierung schneller zu treffen. Wenn Sie Tabellen über viele Datenbanken freigeben, müssen Sie dies auf Ihrer Anwendungsebene überprüfen.

Sie können Ihre Datenbank überprüfen lassen, aber es kann langsam sein. Und im Allgemeinen sind wir im Data Warehouse nicht auf Redundanz oder Integrität bedacht. Wir haben bereits eine Menge Daten und einige Integritäts- und Redundanzdaten beeinflussen die allgemeinen aggregierten Daten nicht.

    
vodkhang 12.05.2010 14:04
quelle
2

Ich weiß nicht, was notwendig ist, aber ich denke, dass sie aus Gründen der Datenintegrität gut sind. Sie möchten sicherstellen, dass Ihre Faktentabelle immer auf einen gültigen Datensatz in der Dimensionstabelle verweist. Selbst wenn Sie sicher sind, dass dies passieren wird, warum nicht die Datenbank die Anforderung für Sie validieren?

    
jaltiere 12.05.2010 14:02
quelle
2

Die Gründe für die Verwendung von Integritätsbedingungen in einem Data Warehouse sind genau dieselben wie in jeder anderen Datenbank: um die Integrität der Daten zu gewährleisten. Wenn Sie und Ihre Benutzer sich darum kümmern, dass die Daten korrekt sind, müssen Sie sicherstellen, dass dies auch so bleibt und dass die Geschäftsregeln korrekt angewendet werden.

    
sqlvogel 12.05.2010 15:04
quelle
2

Soweit ich FKs kenne, beschleunigen Sie Abfragen. Viele BI-Lösungen nutzen sie auch in ihrer Integrationsschicht. Für mich sind sie ein Muss in DWs.

    
cs0815 30.03.2015 19:16
quelle
1

Ich hoffe, dieser Thread ist noch aktiv. Ich denke: Für große Fakttabellen mit vielen Dimensionen und Datensätzen verlangsamen Fremdschlüssel Einfügungen und Aktualisierungen, so dass eine Faktentabelle zu langsam zum Laden wird, besonders wenn sie größer wird. Nach dem Laden der Tabelle werden Indizes für die Abfrage verwendet, sodass sie während Einfügungen / Aktualisierungen deaktiviert und dann neu erstellt werden können. Der Fremdschlüssel RELATION ist wichtig NICHT der Fremdschlüssel selbst: Dies ist im ETL-Prozess wirklich implizit. Ich habe festgestellt, dass Fremdschlüssel Dinge in der realen Welt Datawarehouse zu langsam machen. Sie müssen einen VIRTUAL-Fremdschlüssel verwenden: die Beziehung ist ihre, aber nicht die Einschränkung. Wenn Sie die Fremdschlüsselbeziehungen in einem Datawarehouse beschädigen, machen Sie etwas falsch. Wenn Sie sie bei Einfügungen deaktivieren und eine Diskrepanz oder Waise besteht, können Sie sie nicht erneut aktivieren. Worum geht es also? Der springende Punkt der DW ist der schnelle Zugriff und die Abfrage. Fremdschlüssel machen das unmöglich. Interessante Debatte: nicht leicht, diese Frage im Netz zu finden Kev

    
Kevin O'Neill 04.06.2011 19:38
quelle