Designfrage: Wie Daten doppelt vorhalten (alte Version behalten)?
-
Hallo!
Ich schreibe ein Programm, mit dem man auch Rechnungen schreiben kann.
Nun muss aber z.B., wenn der Kunde umzieht immer noch die alte Adresse auf der Rechnung stehen - sonst wäre das historisch falsch.
Eine manuelle Übernahme kann man ja einbauen, aber erstmal sollen die alten Daten drin bleiben.Das Spielchen läuft so mit 5 oder mehr Tabellen, was mir eine Monstertabelle vor Augen führt.
Gibts da bessere Ansätze?
-
Klingt stark so, als müsstest Du das so modellieren, dass ein Kunde mehrere Rechnungsadressen haben kann, was ja auch oft tatsächlich der Fall ist.
-
Es ist ja nicht nur der Kunde, der war ein Beispiel.
Das selbe Spielchen geht so mit den Posten auf der Rechnung, Krankenkassen und noch was, was mir grade nicht einfällt.
-
Modellier es doch so, daß jeder Kunde beliebig viele Adressen haben kann. Außerdem gibt es für jeden Kunden eine default-Adresse, nämlich die Aktuelle.
-
Nur so eine Idee:
Wie wäre es mit einer 'echten' Historie? Bei jeder Änderung einer Adresse, eines Artikels usw. legst Du eine Backup-Kopie des bisherigen Datensatzes an. Mach in jeden Datensatz ein Feld 'Gültig Ab' und eine Referenz auf den jeweils vorherigen Datensatz. Das sollte relativ einfach zu realisieren sein und man kann sich von den aktuellen Datensätzen immer bis zum gültigen Datensatz zu einem beliebigen Zeitpunkt durchhangeln.