Certains collègues et moi avons entamé un débat sur la meilleure façon de stocker les données historiques. Actuellement, pour certains systèmes, j'utilise une table séparée pour stocker les données historiques, et je conserve une table originale pour l'enregistrement actif actuel. Ainsi, disons que j'ai la table FOO. Dans mon système, tous les enregistrements actifs sont placés dans FOO, et tous les enregistrements historiques dans FOO_Hist. De nombreux champs de la table FOO peuvent être mis à jour par l'utilisateur, et je veux donc garder une trace précise de toutes les mises à jour. FOO_Hist contient exactement les mêmes champs que FOO, à l'exception d'un HIST_ID qui s'incrémente automatiquement. Chaque fois que FOO est mis à jour, j'exécute une instruction d'insertion dans FOO_Hist, comme suit : insert into FOO_HIST select * from FOO where id = @id
.
Mon collègue dit que c'est une mauvaise conception parce que je ne devrais pas avoir une copie exacte d'une table pour des raisons historiques et que je devrais simplement insérer un autre enregistrement dans la table active avec un drapeau indiquant que c'est à des fins historiques.
Existe-t-il une norme pour le traitement du stockage des données historiques ? Il me semble que je ne veux pas encombrer mes enregistrements actifs avec tous mes enregistrements historiques dans la même table, étant donné qu'il peut s'agir de plus d'un million d'enregistrements (je pense à long terme).
Comment vous ou votre entreprise gérez-vous cette situation ?
J'utilise MS SQL Server 2008, mais j'aimerais que la réponse reste générique et qu'elle soit arbitraire par rapport à tout SGBD.
0 votes
Duplicata de stackoverflow.com/questions/323065/