Frage

Wie werden Sie stellen eine zeitliche many-to-many-Beziehung in SQL? Unter nicht-zeitlichen Umständen würde man eine Verknüpfungstabelle (aka Link / Brücke / Karte) verwenden, um eine Verbindung die beiden Seiten.

fügen zeitliche Verfolgung so einfach wie eine ValidStart und ValidEnd Spalten auf der Verknüpfungstabelle inklusive? Wenn Sie dies getan haben, welche Themen (falls vorhanden) haben Sie laufen in? Gibt es eine bessere Methode für Veränderungen im Laufe der Zeit in dieser Art von Beziehung zu verfolgen?

Wenn es überhaupt hilft, die ich in meinem Fall bin mit speziell SQL 2008 und den zeitlichen Daten nicht bitemporalen wie ich nur gültige Zeit zu verfolgen.

War es hilfreich?

Lösung

Ich arbeite an einem Projekt (seit einigen Jahren), die sowohl zeitliche Daten und zeitliche many-to-many-Beziehungen verwendet. Jeder Tisch hat ValidFrom und ValidUntil Spalten (Speichern von Terminen nur).

Als erstes müssen Sie die Semantik der Gültig * Spalten definieren, das heißt, ob ValidUntil aus dem Gültigkeitsbereich eingeschlossen oder ausgeschlossen wird. Sie müssen auch angeben, ob NULL Daten gültig sind und was ihre Bedeutung ist.

Als nächstes müssen Sie ein paar Funktionen, wie dbo.Overlaps2 () und dbo.Overlaps3 (), die erhalten 2 und 3 Datumsbereiche sind, und geben 1 zurück, wenn die Datumsbereiche überlappen und 0 sonst.

Hinzu kommt, dass ich definierte Ansichten für die many-to-many-Beziehungen mit dbo.Overlap3 (...) = 1 ist.

Ein weiterer Punkt ist, eine Reihe von Funktionen zu haben, die den effektiven Gültigkeitsbereich berechnen, basierend auf Daten in 2 oder 3 verknüpften Tabellen.

Vor kurzem hatte ich Funktionalität hinzuzufügen, damit ein Benutzer alle verfügbaren Daten angezeigt werden, oder nur aktuell gültige Daten. Ich diese Einstellung speichere in einer Benutzer-Tabelle, die SPID den Benutzer zugeordnet werden, wenn eine Verbindung zu öffnen, und filtern Sie die Aufzeichnungen in einem anderen Satz von Ansichten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top