Best Practice für ein MySQL-Datenversionssystem
Ich muss Daten wie Artikel in einer MySQL-Datenbank speichern. Wenn ein Artikel geändert wird, muss ich auch die alte Version speichern, damit er wiederhergestellt werden kann. Ich habe einige ähnliche Fragen und Beiträge zu diesem Thema gefunden, bin mir jedoch nicht sicher, welche Lösung das Problem am besten löst.
Hier ist die Basistabelle "Artikel" zum besseren Verständnis:
Artikel (ID, Name, Text)
Hierfür gibt es für mich zwei unterschiedliche Ansätze:
Ansatz 1Speichern Sie die Daten und jede Version eines Artikels in der Tabelle "Artikel" und fügen Sie die Spalten "Version" und "Status" hinzu. In der Version speichere ich die inkrementierte Versionsnummer des Artikels. Der aktive Artikel erhält den "Status" 1 und die anderen den "Status" 2.
Pro's:
Es wird nur ein Tisch benötigt
Eine neue Version ist eine Einfügung der neuen Daten und nur eine Aktualisierung der "Status" -Spalte der alten
Con's
Sehr große Tabellen (möglicherweise langsamere Abfragen ???)Ansatz 2Fügen Sie das Feld "Version" zu "Artikel" hinzu und speichern Sie nur die aktiven Daten in der Tabelle "Artikel". Alte Versionen der Daten werden gespeichert / in die neue Tabelle "articles_versioned" verschoben.
Pro's:
In der Tabelle "Artikel" stehen nur die aktuell gültigen DatenCon's
Veröffentlichung von TabellenSo. Habe ich einen guten Ansatz vergessen? Wie gehe ich mit verwandten Daten in anderen Tabellen (wie Bildern usw.) um?