我有一般性的问题。我想对表记录进行版本控制。通常,您需要记住产品及其功能(特别是价格)。通常是订单项目中的价格保存。但这不是好的解决方案。基本上你可以有更多的理由来记住表记录的功能。记住记录版本的最佳解决方案是什么。我有两个想法:
每个表都有表名tableName_log和tableName中的每个保存记录,如果记录已更改,则将原点保存到tableName_log。问题在于tableName中的外键。我通过在tableName_log中创建列数据来解决它,其中是来自编码为json的外键的对象数组。这是非常难以管理的。
记录的主键是ID和版本号(两列)的组合。实际是最后一个版本。旧版本是必需的标记(例如,active = false),以便从表中获得所有产品(仅限最新版本)。它还有其他一些问题。
哪种方式更好或者是其他方式更有效地解决它?
修改
这个解决方案是我的第一个和第二个例子之间的事情。但是当在历史表中有一些ID(某些外键)时,您将只存储该ID,但并非所有记录都属于该ID。真的不是更好的解决方案吗?