2 Stimmen

Wie implementiert man eine zeilenweise Versionierung mit mysql + java?

Sagen wir zum Beispiel, wir haben eine Tabelle namens Student (sID ist der Primärschlüssel, isValid=1 bedeutet, dass die Zeile gültig ist und 0 für den Moment ungültig ist)

sId    sName   gpa   isValid 
1      Tom      3.0    1
2      Hanks    3.5    1  

nehmen wir nun an, dass ich Tom's Werte aktualisiert habe, aber immer noch die vorherigen Werte speichern möchte.

sId    sName   gpa   isValid 
1      Tom      3.0    0
2      Hanks    3.5    1 
1      Tom      3.6    1

Jetzt haben sich Toms Werte geändert, aber seine vorherigen Werte wurden nicht dauerhaft gelöscht.

Wie kann ich das umsetzen, gibt es ein Plugin oder etwas Ähnliches? Das Problem ist, dass der Primärschlüssel mehrmals vorkommt.

1voto

Hardik Mishra Punkte 14459

Sie müssen das Datenbankdesign ändern.

Behalten Sie in der Student-Tabelle sId,sName und jedes andere Feld (falls erforderlich), das die Elterntabelle sein wird. Erstellen Sie eine weitere Tabelle wie Student_Academic mit sId als Fremdschlüssel der Studententabelle zusammen mit den Feldern gpa, isvalid.

Für jede Änderung der Werte eines Schülers fügen Sie einen neuen Transaktionseintrag ein. Dies stellt auch die Datenbank Normalisierung sicher und erfüllt Ihren Bedarf.

0voto

mprabhat Punkte 19911

Ich fühle hier nicht den Bedarf für ein Plugin, ich hätte etwas Ähnliches gemacht:

  1. Lasse deine sID automatisch inkrementieren
  2. Markiere für jeden Eintrag die letzte Version (sId - 1) als isValid = 0

Ich gehe davon aus, dass du jdbc benutzt

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X