MySQL表的基本版本控制

Jan*_*nda 4 php mysql versioning version-control

我正在尝试为网站上的静态html页面设置(我认为)相当简单的版本控制系统.目标是保留以前版本的内容,然后在需要时恢复它们(我想基本上创建一个与旧版本重复的新版本),并可选择丢弃早于X版本的数据.

该表的设置非常简单:

  • ID
  • reference_id(字符串/用于确定项目所属的页面)
  • 内容(文档/ html页面大小的数据量)
  • e_user(最后更改过的用户)
  • e_timestamp(更改时)

我只是希望有一些设置来为每个内容编辑创建一个以前的版本,然后能够在需要时恢复它.

完成此任务的最佳方法是什么?一切都应该在同一张桌子上,还是分散在几张不同的桌子上?

我读了几页关于这个主题的内容,但是很多内容对于我想要完成的事情来说似乎有些过分(例如http://www.jasny.net/articles/versioning-mysql-data/)

有没有任何平台/指南可以帮助我在这个努力?

Mar*_*ers 5

理想情况下,您希望同一个表中的所有内容与查询中的某些内容一起获取正确的版本,但是您应该小心如何执行此操作,因为低效的查询会给您的服务器带来额外的负担.如果通常你会选择这样一个项目:

SELECT * FROM your_table WHERE id = 42
Run Code Online (Sandbox Code Playgroud)

这将成为:

SELECT * FROM your_table
WHERE id = 42 
AND date < '2010-10-12 15:23:24'
ORDER BY date DESC
LIMIT 1
Run Code Online (Sandbox Code Playgroud)

索引,(id, e_timestamp)以使其有效执行.

在单个查询中选择多行更加棘手,需要采用分组最大化方法,但可以完成.