我即将建立一个新数据库,需要包含仍可访问的记录存档。记录都与某些项目相关联,当项目存档时,我希望记录保持不变,即快照。 (例如,如果联系人与已归档项目相关联,并且他们在一年后移动,我希望它仍然可以提取旧地址。)归档记录不需要更新,但确实需要可以访问。
我知道如何解决这个问题,但我不确定这是否是最佳方法:每个表的副本都会“存档”所有内容,然后将项目放入存档时,所有FK / PK关系会更新,但这似乎是一个繁琐的过程。
我的另一个想法是每个项目(即联系人)将被分配一个PK,然后每个项目将有一个二级密钥,然后与每个项目相关联。这个问题的主要问题是如果联系人更新现场项目似乎很困难,需要进行大量更新。
如果您有任何疑问,请与我们联系。
感谢您的帮助。
答案 0 :(得分:0)
嗯...我唯一一次遇到这样的事情,有想法在应用程序层解决它,而不是在db上。
例如,对于红宝石,你可以使用vestal_versions或paper-trail。
例如,Paper-trail将所有对象的版本作为序列化对象存储在一个表中,并与增量一起使用。
答案 1 :(得分:0)
您要寻找的是在您的域数据旁边包含时态数据。这类事情不是一项微不足道的任务,而且往往是需要支持它的应用程序中复杂化的原因。
有很多方法可以实现这一点,每种方法各有利弊,您选择的方式取决于您需要对数据的时间元素做什么。其中一些包括:
Martin Fowler撰写了一些与设计处理时态数据的模型相关的文章,因此我将从那里开始,为该主题提供良好,坚实的基础。