Wenn dies nur für "Archivierungszwecke" ist, dann ist vielleicht eine separate Tabelle für die Revisionen besser.
Wenn Sie jedoch frühere Revisionen genauso wie aktuelle Revisionen behandeln müssen (wenn Sie beispielsweise Benutzern die Möglichkeit geben möchten, ein Produkt auf eine frühere Revision zurückzusetzen), ist es wahrscheinlich am besten, eine einzelne Produkttabelle zu führen, anstatt Daten zu kopieren zwischen Tischen. Wenn Sie sich Sorgen um die Leistung machen, sind Indizes dafür da.
Sie können einen zusammengesetzten Primärschlüssel für die Produkttabelle erstellen, z. PRIMARY KEY (product_id, revision)
. Vielleicht eine gespeicherte Prozedur, um die aktuelle Revision zu finden – indem Sie die Zeile mit der höchsten revision
auswählen für eine bestimmte product_id
—wird nützlich sein.