2016-05-26 5 views
2

Wir Tabelle XYZ aktualisieren haben folgende Felder:Was sind Best Practices zum Erstellen einer Tabelle für "Protokoll der Änderungen" in der Datenbanktabelle?

First Name|Middle Name|Last Name|Address|DOB|Country|County|(etc.) 

Zunächst haben wir einige Web-Service anrufen, die sich entweder wie Vorname oder DOB aktualisieren Update für eine Zeile in XYZ aktualisierte Informationen sendet oder beide oder alle oder keine .

Nun ist es erforderlich, eine Protokolltabelle in der Datenbank zu erstellen, die eine Zusammenfassung alter Datensätze und Änderungen in XYZ speichert. Jede betroffene Zeile sollte gemeldet werden.

Ist es gut ähnliche Felder in neue Tabelle zu erstellen sagen ABC:

First Name|Middle Name|Last Name|Address|DOB|Country|County|Update_Date 

mit zusätzlichen Feld „Update_datetime“ genannt

jedes Mal Service Nun riefen wir Werte der vorherigen Reihe dh von XYZ wählen wird und aktualisiere dasselbe mit dem Aktualisierungsdatum auf ABC.

Was sind Schlupflöcher in dieser Praxis? Welche anderen besseren Praktiken können verfolgt werden?

Antwort

1

Gibt es eine Anforderung für eine Protokolltabelle oder eine Anforderung für eine ordnungsgemäße Historie?

Oracle hat Geschichte Funktionalität Out of the box

Ich bezweifle, MySQL tut - Sie eine andere Art und Weise zu tun haben kann.

Die Vorteile von Oracle ist, dass es nicht fehlschlagen wird - es ist eine Kernfunktion. Die Nachteile von Hand gerollt ist, na ja, es ist Hand gerollt. Viele SPs, Trigger oder andere Gemeinheiten, die Menschen absichtlich oder versehentlich umgehen können.

0

Ich echo die Notwendigkeit zu wissen, was die Anforderungen sind dahinter. Ist es für Menschen lesbar (Auditing, Debugging etc.) oder maschinenlesbar (z. B. Event Sourcing Architekturmuster)? Wie oft müssen Sie zurückgehen, um frühere Versionen zu sehen? Wie oft ändern sich die Dinge?

Wenn es Event Sourcing ist, dann gibt es ein paar Antworten auf Stack Overflow darüber, z. Using an RDBMS as event sourcing storage und best event sourcing db strategy. Für mehr eine Einführung gibt es z.B. a Martin Fowler video.

Es gibt auch SO Antworten auf logging changes in MySQL und und einen alternativen Ansatz (mit 1 Tabelle, aber Hinzufügen sort-of version numbers to show each record's validity).