2012-03-24 4 views
1

Wenn ich eine Tabelle namens Person (ID, Name, Version) habe, möchte ich es so einrichten, dass Benutzer Updates zu bestehenden Person eingeben erstellt eine neu versionierte Zeile. So dass eine Person nehmen und Änderungen vornehmen kann. Genauso wie Hg et al die Versionierung durchführt. Die Idee ist, dass, wenn eine Person A x eingibt, Person B sie bearbeiten kann und eine lokale Kopie von x.1 hat, mit der ganzen Schönheit, wieder in x zu verschmelzen.Wie Struktur Tabelle für Distributed Change Control einer Zeile

wäre es am besten strukturieren mögen: Person(ID,Name,Version), und eine Art von Dewey-System verwendet für Revisionen oder Person(ID,Name,Version, Creator), und verwenden Sie eine Version lokal für den Benutzer oder irgendeine Art von Person(ID,Name,Person_Id, Creator),

Oder gibt es eine bessere Idee für reihenzentrierte Versionierung?

Das Ergebnis Ende in der Benutzeroberfläche würde wie folgt aussehen:

Sie x in Ihrer Liste haben

Person A wird aktualisiert x [ignorieren], [Update mit A den Änderungen]

Person B hat x aktualisiert [ignorieren], [Update mit B Änderungen]

+0

Ich empfehle Ihnen, für jede Bearbeitung eine Zeile einzufügen. Dies ist ein besserer Ansatz, um Sperren zu vermeiden und wird schneller arbeiten. habe zwei Tabellen - eine Kopfzeile und eine "Aktualisierung", wo du nur die letzte Version einfügst und zeigst – IMHO

Antwort

0

Sie könnten zu einem Start- und Enddatum der Reihe:

PersonID StartDt  EndDt  UpdatedBy Other columns 
1   2012-01-01 2012-02-01 Fred 
1   2012-02-01 2012-03-01 Alice 
1   2012-03-01    Thomas 

Jede Bearbeitung wird mit der Person protokolliert, die die Änderung vorgenommen hat. Sie können auch sehen, in welchem ​​Zeitraum die Zeile aktiv war. Um nach der aktuellen Zeile zu suchen, können Sie die Bedingung EndDt is null verwenden.