2012-10-03 131 views
0

我正在为政府竞赛创建问答网站,用户可以在该问题上提问并获得答案。用于跟踪编辑历史记录的数据库模式

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

为此我创建了一个新表格并将原始文章存储在其中,直到编辑成功提交。

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

回答

4

您通过定义问题&答案表与计数器字段来保留修订历史记录。

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

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

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

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

1

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

但是,如果您需要以前的所有修订,这在大多数情况下是合理的,那么仍然可以将其保存在一张表中。只需为每个问题或答案的编辑添加版本。如果没有指定id,请取最新的。这样你仍然可以访问以前的所有修订版本。

+0

喜欢这样,它显示了如何做到这一点之前完成的许多编辑? –

+1

您将一个计数器添加到表格的键。第一个条目是零,第一个编辑是1,下一个编辑是2,依此类推。当您定义表格索引时,可以降序计数,因此最近的编辑是检索到的第一行。 –

+0

@GilbertLeBlanc这正是我正在寻找谢谢你先生...你能回答这个问题 –

相关问题