2017-05-26 11 views
0

Ich entwerfe ein Data Warehouse, das das Data Vault-Modell verwendet. In meinem Data Warehouse befindet sich eine Entität namens Specialty. Es gibt eine Nachschlagetabelle für diese Spezialitäten basierend auf ihren Codes, die eine Eins-zu-eins-Zuordnung von Specialty_CD zu Description hat. Es gibt eine Historie von Dateneinträgen für diese Nachschlagetabelle (da Spezialkodes ihre Bedeutung ändern können) und alle Satellitentabellen in meinem Tresor.Data Vault-Modell und Lookup-Tabellen

Ich bin auf einen kuriosen Fall gestoßen, in dem ich eine andere Entität im Data Vault namens "Professional" mit der Specialty Entity verknüpfen möchte, wo ein Profi mehrere Spezialgebiete haben kann. Es gibt jedoch keinen Hub für die Specialty Entity. Meine aktuelle Lösung hat einfach einen Professional Hub, der Business Keys und Business Key Hashes für jeden Profi enthält, eine Linktabelle, die Professional BK Hashes den Specialty Codes der Spezialgebiete der professionellen Praxis zuordnet, und eine Nachschlagetabelle von Specialty Codes zur Beschreibung. Der Haken dabei ist, dass die Verknüpfungstabelle einen Hub mit einer Nachschlagetabelle anstelle eines anderen Hubs verbindet. Ich kann nicht anders, als zu glauben, dass dies das Data Vault-Modell durchbricht. Verstößt dies gegen die Regeln des Data Vault-Modells? Zerstört das die Normalisierung meines ganzen Modells?

Ich fühle mich wie Erstellen eines Hub für The Specialties würde in einem zusätzlichen Join für Datenabruf führen. Da die Spezialkodes bereits eindeutige Bezeichner für spezielle Beschreibungen sind, würde ich für diese spezielle Entität lieber eine einzige Suchtabelle als einen Hub und zusätzliche Satelliten für die Spezialeinheit haben, die ich nicht brauche. Zumal es nur im Data Warehouse zur Definition und Beschreibung eines Spezialkodes dient.

Alle Vorschläge für diese Situation sind willkommen. Wird der Datentresor in diesem Szenario ruiniert, indem ein Hub mit einer Nachschlagetabelle verknüpft wird? Ist es die Overheads und zusätzlichen Joins beim Retrieval wert, um einen Hub und Satelliten für diese Specialty Entity zu erstellen?

Vielen Dank! „Specialty Codes von die Spezialitäten, die die beruflichen Praxis

Specialties ist eindeutig ein Kerngeschäft Konzept und ist ein Hub:

Antwort

2

Sie haben Ihre eigene Frage beantwortet. Die Tatsache, dass es nur 2 Felder (Code und Beschreibung) hat, ist irrelevant.

Datentresor arbeitet mit Mustern. Es ist nicht "nur in der Datenbank, um den Zweck der Definition zu dienen". Wenn es entfernt wurde, würde die Datenbank noch funktionieren? Zum Beispiel wird die Postleitzahl von einer Adresse entfernt, die die Datenbank weiterhin verwenden würde. Ich nehme an, dass es Probleme mit einigen Berichten geben könnte, wenn Sie Specialty entfernen.

Sie müssen sich daran gewöhnen, dass Sie VIELE weitere Tabellen haben werden (ungefähr 7 ist die allgemeine Metrik), wenn Sie einen Raw Data Vault erstellen.

pcd

0

Ich denke, Ihr Modell wie dieses

  • Specialty_HUB (HUB_ID (pk), Specialty_CD)
  • Specialty_SAT (SAT_ID (pk), HUB_ID (fk), Load_Date, Beschreibung aussehen sollte)
  • Professional_HUB (HUB_ID (pk), Professioneller_PK)
  • Professional_SAT (SAT_ID (pk), (HUB_ID (fk), Professionelle Informationen ...)
  • Profesional_X_Specialty_LNK (LNK_ID (pk), Load_Date, end_date, Professional_HUB_ID (fk), Specialty_HUB_ID (fk))

Hinweis, dass Sie in diesem Entwurf, der eine Voraussetzung für eine end_date in der Verknüpfungstabelle haben, wie Sie können Sie müssen einen einzelnen Verband unabhängig vom Status des Fachmanns oder der Fachrichtung zurückziehen, und Sie müssen sicherstellen, dass Ihre ETL-Logik die "Streichungen" aufgreift. Wenn sich die Codes, die sich auf Spezialisierungen beziehen, ebenfalls ändern können, benötigen Sie eine weitere Abstraktionsebene zwischen der Verknüpfungstabelle und der Spezialisierung SAT, um sicherzustellen, dass die Links stabil bleiben.