0

我正在为政府竞赛创建一个问答网站,用户可以在其中提出问题并获得答案。

我需要允许用户像 StackOverflow 一样编辑彼此的问题和答案。问题是我需要存储版本历史记录,以便可以恢复不正确的编辑。

为此,我制作了一个新表并将原始帖子存储在其中,直到成功提交编辑。

如何保留修订历史记录以便显示以前的版本,并在必要时恢复编辑?

4

2 回答 2

4

您可以通过使用计数器字段定义您的问答表来保留修订历史记录。

Question                 Answer
--------                 ------ 
Question ID              Answer ID
Edit counter             Edit counter
Question text            Answer Text

问题 ID 和答案 ID 是自动递增的整数。

当问题或答案首次发布时,编辑计数器为零。第一次编辑后,您写入一个新行,编辑计数器设置为 1。下一次编辑是一个新行,编辑计数器设置为 2。依此类推。

这些表的主要索引是 ID 和编辑计数器。ID 递增,编辑计数器递减。这样,最近的编辑是检索到的第一行。编辑计数器告诉您已进行了多少编辑。

于 2012-10-03T18:20:30.347 回答
1

不要使用单独的表。如果不使用较新版本的唯一原因是未完成或无效的编辑会话,则依赖数据库中的普通事务。您只需在事务中替换数据库中的文本。只有当编辑被评估为“有效”时,才会提交该事务。否则你回滚事务。

但是,如果您需要所有以前的修订,这在大多数情况下是有意义的,那么仍然将内容保存在一个表中。只需为每个问题或答案的编辑添加一个又一个版本。如果未指定 id,则获取最新的。这样您仍然可以访问所有以前的修订。

于 2012-10-03T17:27:36.237 回答