我曾经做过一些项目(CMS和EC系统),需要对一些数据进行版本控制。
通常情况下,我会使用这样的模式:
+--------------+
+ foobar +
+--------------+
+ foobar_id +
+ version +
+--------------+
它的效果非常好,但我想知道是否有更好的方法来实现。那种解决方案的主要问题是你必须始终使用子查询来获取最新版本。
例如:
SELECT * FROM foobar WHERE foobar_id = 2 and version = (SELECT MAX(version) FROM foobar f2 WHERE f2 = 2)
这会使大多数查询变得更加复杂,还会有一些性能缺陷。
因此,如果您分享创建版本化表的经验以及每种方法的优缺点,那将是很好的。
谢谢。