Database 用于跟踪编辑历史记录的数据库架构

Database 用于跟踪编辑历史记录的数据库架构,database,Database,我正在为一个政府竞赛创建一个问答网站,在那里用户可以提问并获得答案 我需要允许用户编辑彼此的问题和答案,如StackOverflow。问题是我需要存储版本历史记录,以便恢复不正确的编辑 为此,我创建了一个新表,并将原始帖子存储在其中,直到编辑成功提交 如何保存修订历史记录,以便显示以前的版本,并在必要时恢复编辑?不要使用单独的表格。如果不使用较新版本的唯一原因是未完成或无效的编辑会话,则依赖数据库中的普通事务。您只需在事务中替换数据库中的文本。只有当编辑值为“有效”时,才会提交该事务。否则将回滚

我正在为一个政府竞赛创建一个问答网站,在那里用户可以提问并获得答案

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

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


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

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


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

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


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

通过使用计数器字段定义问答表来保存修订历史记录

Question                 Answer
--------                 ------ 
Question ID              Answer ID
Edit counter             Edit counter
Question text            Answer Text
问题ID和答案ID是自动递增的整数

首次发布问题或答案时,编辑计数器为零。在第一次编辑之后,您将在编辑计数器设置为1的情况下写入新行。下一次编辑是编辑计数器设置为2的新行。等等


这些表的主要索引是ID和编辑计数器。ID为升序,编辑计数器为降序。这样,最近的编辑就是检索到的第一行。编辑计数器告诉您已进行了多少次编辑。

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

Question                 Answer
--------                 ------ 
Question ID              Answer ID
Edit counter             Edit counter
Question text            Answer Text
问题ID和答案ID是自动递增的整数

首次发布问题或答案时,编辑计数器为零。在第一次编辑之后,您将在编辑计数器设置为1的情况下写入新行。下一次编辑是编辑计数器设置为2的新行。等等


这些表的主要索引是ID和编辑计数器。ID为升序,编辑计数器为降序。这样,最近的编辑就是检索到的第一行。编辑计数器告诉您已进行了多少次编辑。

因此它显示了在如何进行编辑之前已完成的编辑次数。您可以向表的键添加一个计数器。第一个条目为零,第一次编辑为1,下一次编辑为2,依此类推。定义表索引时,将计数递减,因此最近的编辑是检索到的第一行。@GilbertLeBlanc这正是我要查找的内容谢谢先生。。。你能做这个吗answer@hakra如果要显示这些现有版本/编辑,则是另一个问题。我只是指它们是如何储存的。不要混合使用model和view.likes,这样它会显示在如何执行此操作之前所做的许多编辑?您可以向表的键添加一个计数器。第一个条目为零,第一次编辑为1,下一次编辑为2,依此类推。定义表索引时,将计数递减,因此最近的编辑是检索到的第一行。@GilbertLeBlanc这正是我要查找的内容谢谢先生。。。你能做这个吗answer@hakra如果要显示这些现有版本/编辑,则是另一个问题。我只是指它们是如何储存的。不要混淆模型和视图。