2016-06-30 6 views
1

In einer unserer Kunden-Datenbanken gibt es einige Snapshot-Tabellen, die nützliche Informationen aus vielen anderen Tabellen zusammenfassen (zB was war der Status eines jeden Kunden in jeder Periode usw.) .Snapshot-Tabellen mit Fremdschlüsseln vs. Snapshot-Tabellen mit echten Werten

Die Snapshot-Tabellen enthalten jedoch hauptsächlich Fremdschlüssel für ihre ursprünglichen Tabellen. Um nützliche Informationen über den Snapshot zu erhalten, müssen wir sie daher mehrfach mit den entsprechenden Tabellen verknüpfen. Und diese Verbindungen dauern oft sehr lange. Das Hinzufügen von Indizes zu allen FL Spalten in Datenbanken (oder zumindest in Spalten in WHERE Klauseln in unseren Abfragen) andererseits verlangsamt die Datenbank erheblich.

Also meine Frage ist, wäre es nicht besser, Snapshot-Tabellen mit echten Werten anstelle von Fremdschlüsseln zu haben? Und wenn die Antwort negativ ist, würde es nicht den Zweck von Snapshot-Tabellen übertreffen, wenn die Originaltabellen aktualisiert würden (zB wenn ein 'Candle' genannt wurde und jetzt 'Lamp' ist Snapshot zwar konsistent, aber ist es wirklich ein Snapshot in diesem Fall?)

+1

Fragen Sie sich: Was passiert, wenn einige Einträge gelöscht werden? Der Schnappschuss, der die FKs enthält, wird – lokusking

+0

@lokusking nicht mehr verwenden. Wäre es nicht sinnvoll, dann echte Werte zu haben? – Disasterkid

+1

Das ist das einzige, was imo Sinn macht. – lokusking

Antwort

1

Ich würde auf die Speicherung der tatsächlichen Daten eher als FK-Werte für den Grund, den Sie erwähnten. Eine bessere Lösung könnte jedoch sein, diese historischen Daten zusammen mit relevanten Attributen (IE-Dimensionen) zu verschieben und für die Analyse neu zu strukturieren. Data warehousing ist sicherlich eine Lösung für diese, obwohl diese Projekte sehr groß sein können, so dass Sie den Wert und den Umfang verstehen müssen. Aber auch ein leichtgewichtiges Sternschema, das auf die spezifischen Ereignisse abzielt, die es zu erfassen versucht, könnte eine bessere Lösung sein als eine große historische Tabelle mit Beziehungen zu transaktionsbasierten Tabellen (insbesondere wenn die Abfragelogik mit den zugehörigen Tabellen komplex ist). .

Verwandte Themen