Hallo zusammen,
ich hoffe mal, dass der Titel so halbwegs das beschreibt, um was es geht, da sich das (für mich) nur sehr schwer in wenigen Worten beschreiben lässt. Und zwar habe ich im Moment das Problem, dass ein Datensatz mehrere verschiedene Zustände haben kann. Diese Zustände müssen in einer Historie fortgeschrieben werden, d.h. es darf kein Zustand ausgelassen werden. Daher habe ich eine Tabelle
Order und eine
OrderState. In der OrderState sind weitere Informationen zum Status gespeichert, u.A. den Erzeugungszeitstempel.
Je nach Status müssen zusätzliche Informationen gespeichert werden, d.h. ist der Status "offen", so müssen die Attribute A, B und C gesetzt sein, ist der Status "geschlossen", so müssen X, Y und Z geschrieben werden. Ich sehe hier folgende beiden Lösungen:
- Ich füge der OrderState-Tabelle alle möglichen Spalten hinzu, die dann je nach Status belegt werden bzw. NULL-Werte enthalten. Diese Lösung mag vielleicht ganz praktisch sein, aber ich kann den Feldern dann nicht NOT NULL vorschreiben, obwohl diese eigentlich benötigt werden, was aber ja vom Status abhängt. Klar, ich könnte, je nach DB, mit Trigger arbeiten, aber ist sowas wirklich schön?
- Ich habe eine OrderState-Tabelle und füge mehrere Tabellen hinzu, die dann die weiteren Informationen enthalten, je nach Status eben eine weitere Tabelle. Hier habe ich einfach das Problem, dass ich via Software sicherstellen muss, dass die weiteren Informationen in den zusätzlichen Tabellen erzeugt werden und die Abfragen gestalten sich dann etwas komplexer.
Wie löst ihr so ein Problem eigentlich? Oder habt ihr noch weitere Ideen?
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)