我有一个 Web 项目,它使用数据库来存储用于生成任务的数据,这些任务将为远程机器处理以更改记录并存储新数据。我的问题是我必须将所有更改存储在每个表上,但我不需要所有这些信息。例如,表 A 可能有 5 个字段,但出于历史目的我只需要 2 个字段。另一个表 B 可能有 3 个,我必须添加另一个表(例如日期)。另外,我不需要在日常任务生成期间进行更改,只需要最近的一个。
维护变更历史的最佳方式是什么?有人告诉我,一个好主意是有两个表,A (B) 表和另一个名为 A_history (B_history) 的表,其中包含所需的字段。这实际上是我正在做的,使用触发器插入历史表,但我对这种方法感到不舒服。我的项目使用 Spring(Spring-data、Hibernate 和 JPA),如果我更改数据库(当前是 MySQL),我必须迁移触发器。有没有管理历史记录的好方法?可以使用 Hibernate/JPA 注释生成表。
如果我保持两个表的方法,我可以向存储库添加一个方法来一次从当前表和历史表中获取行吗?