DB: Verlass dich nicht auf informelle Konsistenz
Unter informeller Konsistenz verstehe ich vermutete, weil "logische" Konsistenz. Äh, das verstehe ich selbst nicht mehr, also ein Beispiel: Es ist wohl ziemlich logisch, dass in einer Datenbank in einer Tabellenspalte Gesamtausgaben die Summe der Einzelausgaben für ein Projekt über die verschiedenen Jahresscheiben abgebildet wird. Unter dieser Annahme könnte ich ein auslaufendes Projekt im Programm also identifizieren, indem ich prüfe, ob die Summe der Gelder bis zum aktuellen Jahr gleich den Gesamtausgaben ist. Aber Vorsicht! Das kann schief gehen. Durch das unschöne Design der Datenbank, dass die Gesamtausgaben nicht per Sicht on the fly berechnet, sondern direkt abgespeichert werden, ist Konsistenz pure Hoffnung. Wann immer möglich ist es also zu empfehlen, einen anderen Weg zu beschreiten, z.B. indem im Code direkt alle zukünftigen Jahre auf 0 geprüft werden.
Alternativ kann Konsistenz übrigens durch Datenbank-Constraints sichergestellt werden. Wenn die Datenbank aber fremdadministriert ist, sind die Möglichkeiten hierfür vielleicht stark begrenzt.
Nota bene: Konsistenz ist eine der vier sogenannten ACID-Eigenschaften, die von Datenbanken erwartet werden.
0 Comments:
Post a Comment
<< Home