È un errore comune preoccuparsi di tabelle e prestazioni "grandi". Se puoi utilizzare gli indici per accedere ai tuoi dati, non importa se hai 1000 record su 1000000, almeno non così come saresti in grado di misurare. Il design che menzioni è comunemente usato; è un ottimo design in cui il tempo è una parte fondamentale della logica aziendale.
Ad esempio, se vuoi sapere qual era il prezzo di un articolo nel momento in cui il cliente ha effettuato l'ordine, essere in grado di cercare record di prodotto in cui valid_from
Questo non è sempre il caso:se stai conservando i dati solo per scopi di archiviazione, potrebbe avere più senso creare tabelle di archivio. Tuttavia, devi essere sicuro che il tempo sia realmente non fa parte della logica aziendale, altrimenti il dolore di cercare più tabelle sarà significativo - immagina di dover cercare nella tabella dei prodotti OPPURE nella tabella product_archive ogni volta che vuoi scoprire il prezzo di un prodotto nel momento in cui è stato effettuato l'ordine .