Jeśli jest to wyłącznie do celów „archiwalnych”, może lepsza jest oddzielna tabela dla wersji.
Jeśli jednak chcesz traktować poprzednie wersje tak samo jak bieżące wersje (na przykład, jeśli chcesz dać użytkownikom możliwość przywrócenia produktu do poprzedniej wersji), prawdopodobnie najlepiej jest zachować pojedynczą tabelę produktów, zamiast kopiować dane między stołami. Jeśli martwisz się o wydajność, do tego służą indeksy.
Możesz utworzyć złożony klucz podstawowy dla tabeli produktów, np. PRIMARY KEY (product_id, revision)
. Może przechowywany proces, aby znaleźć bieżącą wersję — wybierając wiersz o najwyższej revision
dla konkretnego product_id
—przyda się.