我有挑战来设计一个使用RDBMS,Oracle的新数据库精确。在此数据库中,将有一个特定的记录/文档可能跨越多个表。

尽可能少,我想跟踪对此记录所做的更改,并提供一种简单的方法来创建该记录的改变副本。

我不想要一个历史记录表,它将总结文本中的更改,因为我希望能够完全按照它看起来的方式获取生成的document x。但我不希望为每个历史记录输入完整副本。

最佳实践或模式如何实现这一目标?

我可能有一个想法如何使用模仿生成的策略来解决这个问题,但我先想在我走那条路之前先想到一些意见。

有帮助吗?

解决方案

在Oracle 12c中,特别是有一个名为“时间闪回查询”的新功能,该功能恰好用于此目的。(类似的特征在其他数据库中提供:DB2,SQL Server,Vertica为少数名。)

要启用时间查询:

  1. 确保代表文档的每个表都有一对日期,指示特定记录有效(活动)和
  2. 时的开始和结束日期(时间)
  3. 通过未更新它们,而是插入新版本的记录,仅更新历史记录的结束日期,保持历史记录。
  4. 然后,您将能够向您的表发出查询,这些表看起来像生成的icetagcode,这将返回在指定日期处活动的记录。

    您可以读取详细说明

许可以下: CC-BY-SA归因
不隶属于 dba.stackexchange
scroll top