2016-07-21 32 views
0

Ich lese über DW-Modellierung und frage mich, warum Ersatzschlüssel überhaupt verwendet werden?Warum Ersatzschlüssel benötigt werden?

Ich verstehe, dass manchmal Business-Schlüssel nicht ganze Zahlen sind, die das Leben (sowie Joiing und Indizierung) schwieriger macht. Allerdings, was ich nicht verstehe, ist, warum eine gewisse Einschränkung der DW oder RDBMS durch Hinzufügen und zusätzliche Spalte für die Verwaltung von eindeutigen Bezeichnern zu lösen?

Wäre es nicht angemessener, dass diese Art von Funktionalität für DW/RDBMS-Benutzer transparent ist und der Eintrag automatisch eine interne Kennung vom System erhält? Zum Beispiel Erstellen eines SHA-1-Digests der gesamten Zeile oder einer Teilmenge davon (die Felder, die in irgendeiner Art von Textformat dargestellt werden können).

+0

Ersatzschlüssel sind in der Regel automatisch inkrementierte Ganzzahlen, die 32 Bit lang sind. Da Sie den Zeilenbezeichner gegebenenfalls als Fremdschlüssel duplizieren müssen, wird im Allgemeinen viel Platz eingespart, anstatt lange Zeichenfolgen oder mehrere Spalten zu duplizieren. – apokryfos

+0

Verstanden. Was ich nicht verstehe, warum müssen sich die DW-Benutzer darum kümmern und warum ist dies nicht eine integrierte Funktionalität der DW- oder RDBMS-Software? – aviad

+0

Meine Vermutung ist, dass das RDBMS den zusätzlichen Platz, der von Ersatzschlüsseln eingenommen wird, in den Fällen, in denen es nicht notwendig ist, nicht erzwingen will. Was das RDBMS bietet, ist ein Mechanismus für den DB-Entwickler, um solche Schlüssel wo erforderlich zu definieren. – apokryfos

Antwort

1

Der Grund für die Verwendung von Ersatzschlüsseln liegt darin, dass Sie die Kontrolle über das Data Warehouse haben, aber höchstwahrscheinlich keine Kontrolle über die Quellsysteme haben. Annahmen, die Sie heute über die Stabilität der natürlichen Schlüssel machen, können Ihnen in der Zukunft Probleme bereiten.

Fragen Sie nicht mit Ihrem eigenen Ersatzschlüssel laufen in können:

  1. große oder komplexe natürliche Schlüssel in Quelle - Wie Sie bereits das Quellsystem könnte einen natürlichen Schlüssel, der erwähnen, wird nicht führen Sie sowie eine einfache ganze Zahl
  2. Natural Key kann in der Quelle wieder verwendet werden - Ich lief einmal in ein Problem, wo das Quellsystem Schlüssel wieder von 1 wieder einmal den maximalen Wert eine ganze Zahl halten konnte, wurde erreicht (für die Anwendung machte dies Sinn). Das Data Warehouse musste erkennen, dass die wiederholten Schlüssel brandneue Datensätze waren.
  3. Fusionen - Stellen Sie sich vor, dass zwei Firmen zusammenkommen. Jede Firma hat eine Employee Tabelle mit einer automatisch inkrementierenden Ganzzahl, die als Schlüssel verwendet wird. Jede Firma hat einen Mitarbeiter # 1. Das DW-Warehouse benötigt einen Ersatzschlüssel, um die zwei Personen zu unterscheiden, die dieselbe ID haben.
+0

Gute Punkte! Aber all Ihre Punkte kochen auf das, was ich (teilweise) erwähnt habe: Machen Sie keine Annahmen über die im Quellsystem verwendeten Schlüssel und pflegen Sie die eindeutigen Identifikatoren auf der DB SW-Ebene. Wäre das nicht der richtige Weg, um das Problem zu lösen oder das Rad jede einzelne Zeit neu zu erfinden? – aviad

+0

Ja, machen Sie keine Annahmen über die Schlüssel im Quellsystem und pflegen Sie eindeutige Identifikatoren auf der DB-Ebene, die höchstwahrscheinlich ein automatisch inkrementierendes Integer-Feld verwenden. Ich bin mir nicht sicher, was Sie meinen, indem Sie das Rad jedes Mal neu erfinden. – Cory

+0

das Rad neu erfinden = den DB-Benutzer die eindeutige ID in einen Datensatz implementieren lassen, statt ihn in der DB-Software zu standardisieren. – aviad

Verwandte Themen