Um die Daten anständig zu verwalten benötige ich eine Versionierung der Daten, also eine Art History so das immer die vorherigen Versionen wieder hergestellt werden können.
Meine Frage ist nun wie man da ran geht ?
Das kenne ich als Datenhistorisierung. Ich habe mehrfach folgendes implementiert: Zur ersten DB wird eine zweite DB mit gleichem Schema, aber ohne Fremdschlüssel beigefügt, vorgeschlagener Name: {Name der zu historisierenden DB}_HISTORY
Als nächstes sorgst Du dafür, dass jedes UPDATE und INSERT dazu führt, dass erstens der "alte" Datensatz in der HistorisierungsDB landet und zweites dass erst dann das UPDATE bzw. INSERT erfolgt.
Hier empfehle ich natürlich die Kapselung des gesamten SQL-Codes in geeigneten Modulen bzw. in so genannten stored procedures (noch besser!).
Natürlich musst Du auch geeigneten SQL-Code (incl. GUI) schreiben, der die historisierten Daten anzeigt (nicht editierbar macht, sowas wollen wir nicht, keine UPDATEs und DELETEs auf die HistorisierungsDB!).
Speichert man die History in einer extra Tabelle, oder gibt man der normalen Tabelle in der sich auch die Livedaten befinden einfach eine Spalte "version" und zählt da immer aufwärts ?
Ich empfehle die o.g. Lösung, die eine saubere Trennung Stammdaten/Historisierungsdaten darstellt. Eine Versionierung wie von Dir angedacht kann zu Problemen in der Datenadministration führen.
Kennt dort vieleicht ein Beispiel oder etwas wo ich nachlesen kann wie man es richtig macht ?
Frag ruhig noch mal nach, wenn was unklar blieb.