Se questo è puramente per scopi di "archivio", forse è meglio una tabella separata per le revisioni.
Tuttavia, se è necessario trattare le revisioni precedenti allo stesso modo delle revisioni correnti (ad esempio, se si desidera offrire agli utenti la possibilità di ripristinare un prodotto su una revisione precedente), probabilmente è meglio mantenere un'unica tabella prodotti, piuttosto che copiare i dati tra i tavoli. Se sei preoccupato per le prestazioni, ecco a cosa servono gli indici.
È possibile creare una chiave primaria composta per la tabella dei prodotti, ad es. PRIMARY KEY (product_id, revision)
. Forse un processo memorizzato per trovare la revisione corrente, selezionando la riga con la revision
più alta per un particolare product_id
—sarà utile.