我正在为政府竞赛创建问答网站,用户可以在该问题上提问并获得答案。用于跟踪编辑历史记录的数据库模式
我需要允许用户编辑彼此的问题和答案像StackOverflow。问题是我需要存储版本历史记录,以便可以恢复不正确的编辑。
为此我创建了一个新表格并将原始文章存储在其中,直到编辑成功提交。
如何保留修订历史记录以便可以显示以前的版本,并在必要时可以恢复编辑?
我正在为政府竞赛创建问答网站,用户可以在该问题上提问并获得答案。用于跟踪编辑历史记录的数据库模式
我需要允许用户编辑彼此的问题和答案像StackOverflow。问题是我需要存储版本历史记录,以便可以恢复不正确的编辑。
为此我创建了一个新表格并将原始文章存储在其中,直到编辑成功提交。
如何保留修订历史记录以便可以显示以前的版本,并在必要时可以恢复编辑?
您通过定义问题&答案表与计数器字段来保留修订历史记录。
Question Answer
-------- ------
Question ID Answer ID
Edit counter Edit counter
Question text Answer Text
问题ID和答案ID是自动递增整数。
当问题或答案首次发布时,编辑计数器为零。在第一次编辑之后,您将编辑计数器设置为1的新行。下一次编辑是编辑计数器设置为2的新行。依此类推。
这些表的主索引是ID和编辑计数器。 ID是递增的,编辑计数器是递减的。这样,最近的编辑是检索到的第一行。编辑计数器会告诉您已进行了多少次编辑。
请勿使用单独的表格。如果不使用较新版本的唯一原因是未完成或无效的编辑会话,则依赖数据库中的普通事务。您只需替换事务内数据库中的文本即可。该交易仅在编辑被评价为“有效”时才被提交。否则,您将回滚事务。
但是,如果您需要以前的所有修订,这在大多数情况下是合理的,那么仍然可以将其保存在一张表中。只需为每个问题或答案的编辑添加版本。如果没有指定id,请取最新的。这样你仍然可以访问以前的所有修订版本。
喜欢这样,它显示了如何做到这一点之前完成的许多编辑? –
您将一个计数器添加到表格的键。第一个条目是零,第一个编辑是1,下一个编辑是2,依此类推。当您定义表格索引时,可以降序计数,因此最近的编辑是检索到的第一行。 –
@GilbertLeBlanc这正是我正在寻找谢谢你先生...你能回答这个问题 –