J'ai un système CMS qui stocke des données sur des tables telles que ceci: Je tente de mettre en œuvre un système de révision, un peu comme le cas. Si je faisais juste le faire pour le tableau code> code> Je prévois de conserver une copie de toutes modifications à ce tableau dans une table séparée. Comme je dois le faire pour au moins 4 tables (la table des étiquettes n'a pas besoin d'avoir des révisions) cela ne semble pas tout comme une solution élégante. P> Veuillez noter que les Merci d'avance. P> Merci d'avance. P > p>
3 Réponses :
Regardez cette question: Comment contrôle de la version Un enregistrement dans une base de données p>
Pourquoi ne pas avoir une histoire distincte pour chaque table (conformément à la réponse acceptée sur la question liée)? Cela a simplement une clé primaire composée des tables d'origine 'PK et le numéro de révision. Vous aurez toujours besoin de stocker les données quelque part après tout. P>
Votre réponse est très intéressante. Spécialement MEDIA WIKI code> Schéma de base de données. Il crée une couche supplémentaire
Tableau -> Touches de révision -> Données de révision CODE> Garder la table de données code> aussi petite que possible tout en fournissant une historique des révisions et de naviguer entre les révisions et Tout comme le fait. Je me demande toujours s'il y a une façon plus élégante i> pour le stocker.
HI HI travaillez actuellement sur la solution à un problème similaire, je résolvez-le en divisant mes tables en deux, une table de contrôle et une table de données. La table de contrôle contiendra une clé primaire et une référence dans la table de données, la table de données contiendra la clé de révision automatique et la clé primaire de la table de commande en tant que clé étrangère.
Prendre votre table d'entrées sous forme d'exemple P> < pré> xxx pré>
devient p> à requête p> au lieu de mettre à jour la table Entries_Data Vous Utilisez une instruction insert, puis mettez à jour la révision de la table des entrées avec la nouvelle révision de la table des entrées. P> L'avantage de ce système est que vous pouvez passer à différentes révisions simplement en modifiant la propriété de révision dans la table des entrées. . L'inconvénient est que vous devez mettre à jour vos questions. Je l'intégrons actuellement à cela dans une couche ORM afin que les développeurs ne soient pas soumis à l'écriture de SQL de toute façon. Une autre idée que je joue avec est pour qu'il y ait une table de révision centralisée que toutes les tables de données utilisent. Cela vous permettrait de décrire l'état de la base de données avec un numéro de révision unique, similaire à la fonctionnement des numéros de révision de subversion. P> P>
Pourquoi quelqu'un a-t-il répondu à la réponse d'Ejrowley? Je cherche toujours la meilleure solution possible et donnera un crédit lorsque le crédit est dû. Mais ces coutures comme une solution viable, non?
Même si votre système n'est pas exactement ce que je vais pour; Je crois que le schéma de table code> wiki code> à Edward Williams est une réponse plus étroite en termes de performance et de disponibilité; Je crois que votre réponse est dans la ligne de réponse Edwards avec de meilleurs schémas, donc je l'accepte. Merci!
Pour l'un de nos projets, nous sommes allés la manière suivante:
SELECT entry_id, title, text, index1, index2 FROM Entities INNER JOIN EntityProperties ON Entities.id = EntityProperties.entity_id AND Entities.date_to IS NULL AND EntityProperties.date_to IS NULL