Lena Zimmermann: Archivdatenbank. Aufbau und Abfragen?

Hallo zusammen,

in meiner Anwendung (PHP 5, MySql 5) muss für bestimmte Tabellen jede Datensatzänderungen gespeichert werden (der Datenbanklog reicht nicht, ich muss auch später noch drauf zugreifen können).

Ich hatte mir überlegt, eine zweite Tabelle, eine Archivtabelle, aufzubauen. Ein Beispiel:

user: userid, first_name, last_name
(1, Lena, Zimmermann)

user_archiv: userid, timestamp, column, txt
(
1, timestamp1, 2, Lena
1, timestamp1, 3, Zimmermann
1, timestamp2, 2, Lisa
1, timestamp3, 2, Linda
1, timestamp4, 3, Müller
)

Aus Tabelle zwei bekomme ich (unter MySQL!) schon den aktuellsten Datensatz heraus (Die Groupfunktion ist hier ja nicht ganz sauber umgesetzt), bzw auch den zu einem bestimmten Zeitpunkt.

Jetzt aber meine Frage: Gibt es die Möglichkeit mit einer Abfrage folgendes Ergebnis zu bekommen:

1,Lena, Zimmermann
1,Lisa, Zimmermann
1,Linda, Zimmermann
1,Linda, Müller

Also zu jeder Änderung den aktuellen Datensatz. Natürlich geht das nur, wenn alle Spalten von einem Datensatz sind, oder aber man lagert die Speicherung des eigentlichen Datums aus. Hier aber mal vereinfacht eben nur Strings.

Ich habe schon ein bißchen gesucht, tue mich aber mit den Suchbegriffen schwer.

Viele Grüße und Danke :o)

Lena

  1. Hi,

    ich würde einfachererweise die Archivtabelle genauso strukturieren wie die ursprüngliche Tabelle, so ersparst du dir später kompliziertes Pivotieren von Zeilen in Spalten. Der Archivtabelle würde ich dann nur noch einen Zeitstempel mit dazu geben (durch einen Trigger), wann die Änderung erfolgte.

    Leseabfragen könntest du über eine UNION ALL View über beide tabellen abstrahieren.

    HTH, Ciao, Frank

    1. Danke Frank, war auch als Lösungsversion 2 vorgesehen. Fand die aber (eigentlich) schöner

      Viele Grüße
      Lena