Warum das Datenmodell über die SQL-Qualität entscheidet
Viele Fehler in zeitbezogenen SQL-Abfragen entstehen nicht erst bei der Formulierung der Abfrage. Ihre Ursache liegt bereits im Datenmodell.
Wenn Beginn und Ende einer Gültigkeit uneinheitlich gespeichert werden, offene Zeiträume unterschiedlich dargestellt sind oder mehrere Zeilen gleichzeitig für denselben Sachverhalt gelten können, muss jede spätere Abfrage diese Unklarheiten erneut behandeln.
Das führt häufig zu langen Bedingungen, schwer verständlichen Sonderfällen und widersprüchlichen Ergebnissen.
Ein sauberes Zeitmodell beantwortet mindestens folgende Fragen:
- Ab welchem Zeitpunkt gilt ein Datensatz?
- Bis zu welchem Zeitpunkt gilt er?
- Ist die obere Grenze enthalten oder ausgeschlossen?
- Wie wird eine unbegrenzte Gültigkeit dargestellt?
- Dürfen mehrere Datensätze gleichzeitig gültig sein?
- Müssen aufeinanderfolgende Zeiträume lückenlos sein?
- Darf sich ein Wert rückwirkend ändern?
- Wird eine fachliche Historie oder nur der aktuelle Zustand gespeichert?
- Werden reine Kalendertage oder genaue Zeitpunkte betrachtet?
- Welche Zeitzone gilt?
Diese Entscheidungen gehören zur fachlichen Definition des Datenbestands. Sie dürfen nicht bei jeder einzelnen Abfrage neu interpretiert werden.
Eine robuste SQL-Lösung beginnt deshalb mit einem konsistenten Verständnis der gespeicherten Zeiträume.