# versionierte Tabellen



## Sascha Kunitz (10. Apr 2014)

Hi Leute,

ich wollte mal fragen was für Ansätze es gibt um indizierte, sprich eine eigene ID, versionierte Datentabellen es gibt. Insbesondere im hinblick auf das Hibernate Framework.

Also z.B. man hat ein Object

```
class MyObject extends Serialize {
       int id;
       String name;
       Double wert;
}
```

Dieses wird in eine Tabelle gespeichert unter einer dessen id. Ausgelesen wird es über dessen ID. Wird dieses Objekt mit der ID erneut gespeichert, und wird eine neue Version angelegt. Die ID zum Auslesen und die vorherig(en) gespeicherten Datensätze bleiben erhalten.


----------



## turtle (10. Apr 2014)

ich verstehe deine Frage nicht???:L

Insbesondere wird, am Beispiel des letzten Satzes, nicht klar, ob das eine Frage, beabsichtigtes Verhalten oder Verhalten von Code, der schon existiert, ist.

Also, formulier bitte deine Frage sorgfältiger und poste deine Hibernate-Mappingdatei, sofern vorhanden.

Das folgende ist somit eine Vermutung,was du vielleicht eigentlich fragen wolltest

<Theorie AN
Datenbank-Tabellen können indiziert werden, um das Suchen darin zu beschleunigen. Beispielsweise muss nur ein sehr geringer Teil durchsucht werden, wenn nach einer Nummer in einer Telefon-Tabelle gesucht wird.

Aber aus deiner Beschreibung scheint es mir mehr darum zu gehen, wie verschiedene Versionen eines Eintrages in einer Tabelle gehalten werden können.

Beispielsweise wie geht es, das Benutzer A einen Eintrag in der Tabelle ändert, und Benutzer B dann seinen Datensatz NICHT mehr speichern kann, weil A ihn bereits geändert hat?

Dieses wird oft durch eine Versions-Spalte gelöst. Beim Update von Benutzer A wird auch die Versions-Spalte geändert. Nun führt die Änderung von Benutzer B ins "Leere" weil es den Datensatz mit der alten Versionsnummer nicht mehr gibt.

<Theorie AUS


----------



## Sascha Kunitz (11. Apr 2014)

Erstmal danke für deine Hilfe Turtel. 

*Ganz konkreter Fall:*
Ich habe ein Objekt, welches in einer MySQL - Datentabelle gespeichert wird. Dieses Objekt soll jetzt versioniert werden. Mein Überlegung ist jetzt folgende

Versionstabelle:
id                      int(11)      Primary Key
data_row_id        int(11)      ID der Datenzeile


Datentabelle:
id                     int(11)       Verbindung zu Versionstabelle data_row_id
name                string
.....

In der Vesionstabelle wird jeweils nur ein Datensatz pro Dateninformation gespeichert. In der Datentabelle werden die unterschiedlichen Versionen der Daten gespeichert. Die id soll in diesem Beispiel immer konstant bleiben, da auf diese Daten von einer anderen Tabelle(n) zugegriffen wird.

*Hierzu meine Fragen:*
Wie würdet ihr so etwas realisieren? Ich benutze in meinem aktuellen Projekt das Hibernate Framework. Gibt es evtl. in dem Framework eine Realisierung hierfür?


----------

