Har*_*San 6 mysql database implementation temporal-database
我目前有一个非时间MySQL数据库,需要将其更改为时态MySQL数据库.换句话说,为了报告目的,我需要能够保留随时间对记录所做的更改历史记录.
我实现这一点的第一个想法是简单地在表中插入而不是更新,当我需要选择数据时,只需GROUP BY在某个列上执行并按时间戳排序DESC.
但是,在仔细考虑了一下之后,我意识到这会让事情搞得一团糟,因为每个插入的主键(实际上只是模拟单个记录上的一些更新)会有所不同,从而搞乱任何联系使用主键链接到数据库中的其他记录.
因此,我的下一个想法是继续更新数据库中的主表,但也创建一个新的插入到"审计表"中,它只是更新后的完整记录的副本,然后当我需要报告时时态数据,我可以使用审计表进行查询.
有人可以给我一些指导或链接,如何正确地做到这一点?
谢谢.
小智 6
使给定的表R暂时(即保持历史记录)。
一种设计是使表R保持不变,并使用valid_start_time和valid_end_time创建一个新表R_Hist。有效时间是事实成立的时间。
CRUD操作可以表示为:
插入
更新
删除
选择
相反,您可以选择为表R的每个属性设计新表。通过此特定设计,您可以捕获属性级别的时态数据,而不是先前设计中的实体级别。CRUD操作几乎相似。