2010-04-24 4 views
1

Je dois faire un article qui ne peut pas être édité, mais il peut être enregistré comme une nouvelle version et seule la version la plus récente est montrée aux utilisateurs. Comment dois-je mettre en œuvre ce type de conception de base de données?article de style Wikipedia, comment devrais-je concevoir ma base de données?

+0

De bons mots-clés pour ceci sont ["base de données révisions"] (http://stackoverflow.com/search?q=database+revisions), donnant beaucoup de questions pertinentes. Le [haut] (http://stackoverflow.com/questions/39281/database-design-for-revisions) [deux] (http://stackoverflow.com/questions/750782/database-design-for-text-revisions Les résultats semblent assez bien couvrir la zone. –

Répondre

2

La base de données peut avoir un numéro de version ou un horodatage pour chaque version de l'article, et vous n'avez qu'à afficher l'article le plus récent (numéro de version le plus élevé ou horodatage le plus récent). Pour obtenir de meilleurs résultats, utilisez un cache proxy inverse afin d'éviter de toucher la base de données à chaque coup.

+1

Certainement mieux que currentVersion ou dateCreated que j'ai suggéré. – Felan

0

Il y a plusieurs façons de gérer cela. Je pense que la façon la plus simple est d'avoir une table, "article", avec toutes les données qui sont dans la pierre quand l'article est créé (id par exemple) et une deuxième table avec chaque version éditée, "articleVersion". article aurait une relation un à plusieurs avec articleVersion.

Vous pouvez définir un bit, "currentVersion", et le désactiver sur l'ancienne version et sur la nouvelle version. Vous pouvez également utiliser un datetime, "dateCreated", pour obtenir la version la plus récente, car vous ne prévoyez jamais de les modifier.

Questions connexes