2010-01-05 4 views
0

Je veux créer une table pour garder histroy des amendements & l'histoire de l'objet. pour que j'ai créé deux colonnes clé primaire (Id Date & de mise à jour)Structure de la table pour plusieurs Histrory

J'ai 3 plus colonnes de date pour maintenir l'histoire & Statut Colonne pour l'histoire réelle de l'objet. Statut, StatusFrom, Statusto, UpdateDate & NextUpdateDate

UpdateDate & NextUpdateDate est pour maintenir histroy de Amendement de.

Existe-t-il une meilleure façon de maintenir l'historique réel de l'enregistrement? & Ammend histroy de l'enregistrement?

Répondre

1

Vous créez ce que l'on appelle une "table d'audit". Il y a plusieurs façons de le faire. deux d'entre eux sont:

  1. Créer une table avec des champs clés appropriés et avant/après des champs pour toutes les colonnes qui vous intéressent sur la table source, avec un horodatage de sorte que vous savez quand le changement a été fabriqué.

  2. Créez une table avec les champs clés appropriés, un horodatage de modification, un nom de champ et des colonnes avant/après.

Méthode (1) a le problème que vous vous retrouvez avec un beaucoup de champs dans la table d'audit - essentiellement deux pour chaque champ dans votre table source. En outre, si seulement un ou deux champs de la table source changent, alors la plupart des champs de la table d'audit seront NULL, ce qui peut gaspiller de l'espace (en fonction de votre base de données). Il nécessite également beaucoup de code spécial pour déterminer quel champ a changé lorsque vous revenez pour traiter la table d'audit.

Méthode (2) a le problème que vous finissez par créer une ligne distincte dans le tableau pour chaque champ qui est changé sur votre table source, ce qui peut entraîner une beaucoup de lignes dans la table d'audit (une ligne pour chaque champ changé). Parce que chaque changement de champ entraîne l'écriture d'une nouvelle ligne dans la table d'audit, vous avez également les mêmes valeurs de clé dans plusieurs lignes qui peuvent utiliser jusqu'à un certain nombre d'espace uniquement pour les clés. Quelle que soit la structure de la table d'audit, il est habituel d'utiliser un déclencheur pour la maintenir.

J'espère que cela aide.

Questions connexes