2010-04-06 3 views
1

J'ai vu plusieurs questions ici sur le suivi de l'histoire db, mais n'arrive pas à trouver celui qui correspond à notre situation. Nous devons suivre l'historique de plusieurs tables, dont certaines sont des tables de liaison plusieurs-à-plusieurs. Par exemple, disons que nous avons ce schéma:Comment suivre l'historique des tables db qui incluent des tables de mappage many-to-many?

EntityA 
id 
name 

EntityB 
id 
name 

ABLink 
A_id 
B_id 

Donc, le suivi des changements à EntityA ou EntityB semble assez simple. Nous pouvons garder une table de journal avec les mêmes colonnes plus un horodateur et un utilisateur. Mais qu'en est-il des liens? Comment maintenir l'ensemble des liens valides pour une version donnée des données? Nous devons être en mesure de recréer un historique des données montrant les changements dans l'ordre chronologique. Donc, si un lien est ajouté ou supprimé, nous l'indiquons. Etc

Répondre

1

Créer une table de journal ABLink (avec sa propre clé primaire si vous le souhaitez), avec des liens de clé externe vers les tables EntityA & EntityB. Vous pouvez ajouter une colonne de change_type à vos tables de journaux pour indiquer si l'entrée du journal est un insertion/mise à jour/supprimer - bien sûr le nombre à plusieurs table de journal ne doit contenir aucune mise à jour entrées change_type:

ABLink_Log  EntityA_Log  EntityB_Log 
----------  -----------  ----------- 
id    id    id 
A_Log_id   name   name 
B_Log_id   change_type  change_type 
change_type  date_stamp  date_stamp 
date_stamp  user_id   user_id 
user_id 
Questions connexes