2016-05-08 12 views
1

Ich habe eine Tabelle, in der jeder Eintrag eine unterschiedliche Gültigkeit haben kann. Eintrag sieht so aus: (Id, ValidFrom, ValidTo). Es kann mehr solche Einträge mit derselben ID geben, jedoch mit einer anderen Gültigkeit. (Gültigkeit sollte nicht überlappen). Ich muss Operationen zum aktuellen Zeitpunkt oder zu einem späteren Zeitpunkt einfügen/löschen/aktualisieren.Einträge mit unterschiedlicher Gültigkeit bei Beibehaltung von Fremdschlüsselbeschränkungen

All dies könnte in Business-Logik der Anwendung behandelt werden, aber ich möchte auf diese Tabelle aus anderen Tabellen mit Fremdschlüssel beziehen.

Ich fand heraus, dass Temporal Tables könnte der Weg sein, aber es gibt ein kleines Problem. Die Spalten SysStartTime und SysEndTime werden automatisch nach der Zeit von INSERT/UPDATE bestimmt und können beim Einfügen/Aktualisieren nicht gesetzt werden.

Gibt es eine Möglichkeit, eine Gültigkeitsinformation für jeden Eintrag in der Datenbanktabelle zu speichern, während Fremdschlüsseleinschränkungen zugelassen werden? Ist diese Nachfrage überhaupt sinnvoll?

+0

Eine Fremdschlüsseleinschränkung ist aufgrund der Ungleichheitsbedingung für 'ValidFrom' und 'ValidTo' schwierig für diesen Tabellentyp. –

Antwort

0

Temporal Tabellen können Ihnen eine Lösung zur Verfügung gestellt Stammtabelle Ihres FK ist auch temporale Tabelle. Für die manuelle Verwaltung von validFrom und validTo ist es möglich (z. B. mit Triggern), aber fehleranfällig. Nur ein Problem zu lösen:
1. Gültigkeitszeiträume sollten nicht überlappen (bereits erwähnt).
2. Gültigkeitszeiträume sollten keine Lücken haben.

Beachten Sie auch, dass historische Daten ein großes Speichervolumen erfordern.