我目前正在撰写一个帖子网站,需要对帖子进行版本控制。我只是不知道如何在数据库和技术方面实现这一点,以便保存和控制帖子。
有没有经验丰富的人可以帮助我?
我已经看到Wordpress只在1个表中进行版本控制,这是POST。我也建议这样做,因为写入具有相同数据和字段的2个表是很麻烦的。
答案 0 :(得分:3)
我会创建两个表,一个是“live version”表,另一个是“archive”表。创建新版本后,将现有的实时版本移动到存档表(包含适当的时间戳和作者注释),并将新的实时版本添加到实时表中。
存档表与实时表具有相同的模式,除了它还有其他列可以保存有关您支持的版本控制的元数据(版本号,注释,时间戳等)。
答案 1 :(得分:3)
我知道stackoverflow存储版本之间的增量。我看到其他人做的是设置另一个表,如第一个,但有一个作者和版本或时间戳。您可以使用数据库触发器将记录推送到另一个表,这样您就不必过于担心在应用程序级别进行更改。
如果您只想使用一个表,那么我建议添加作者,时间戳和iscurrent标志。由于您可以选择最大版本号,因此不需要该标志,但它会使您的查询更容易。仅当行是最高版本号时才设置标志。您仍然可以使用触发器来填充行,但要小心,否则您可能会在更新触发器的循环中结束。
答案 2 :(得分:2)
使用大量的盐,但是,你可以拥有一个父ID,它连接到同一个表上的主键以及指示它是否是当前版本的bool。这是我之前用于CMS系统的方法...您可能需要修订历史记录的公共ID(以便获取项目的所有历史条目都是非递归的)。你可以通过将第一个版本的id包含在所有后续版本中来实现这一点,这样你就可以轻松获得所有版本。
我的.02
答案 3 :(得分:2)
听起来你只想在行上记录版本号。这是一个标识最新版本的数字。每次更新数据时,您实际插入一个新行并碰撞记录版本号。当您查询以获取数据时,您只需查询以获取具有最大记录版本号的行。触发器可用于生成记录版本号,因此您无需担心插入时生成数字。
如果你想要进行全面的版本控制,你需要在行上有某种状态字段,告诉你这个版本是否被还原/删除/批准。获得最新版本后,选择具有适当状态的最大版本控制编号的行。
如果您只想保存帖子的历史记录而实际上没有版本控制,则可以使用记录版本号技术。
答案 4 :(得分:1)