我将要建立一个新的数据库,它需要包括仍然可以访问的记录的存档。记录都与某些项目相关联,当项目存档时,我希望记录保持不变,即快照。(例如,如果联系人与已存档的项目相关联,而他们在一年后搬家,我希望它仍然保留旧地址。)存档的记录不需要更新,但它们需要是可访问的。
我有一个想法,但我不确定这是否是最好的方法:每个表的副本将“存档”所有的东西,然后当将一个项目存档时,所有的FK/PK关系都将被更新,尽管这看起来是一个繁琐的过程。
我的另一个想法是,每个项目(即联系人)将分配一个PK,然后每个项目将有一个二级关键字,然后将与每个项目相关联。这样做的主要问题是,如果联系人更新了实时项目,则似乎很难,需要进行大量更新。
如果你有任何问题请告诉我。
谢谢你的帮助。
发布于 2012-01-18 23:41:12
嗯..。我唯一一次遇到这样的事情时,有一个想法是在应用层解决它,而不是在数据库上。
例如,对于ruby,您可以使用vestal_versions或书面记录。
例如,Paper-trail将所有对象的版本存储为单个表中的序列化对象,并与增量一起使用。
发布于 2012-01-18 23:54:20
您正在寻找的是在域数据的同时包含时态数据。这类事情并不是一项微不足道的任务,而且通常会导致需要支持它的应用程序变得非常复杂。
有许多方法可以做到这一点,每种方法都有其优缺点,您选择的方法将取决于您需要如何处理数据的时间元素。其中一些包括:
Martin Fowler写了一些关于设计处理时态数据的模型的文章,所以我将从那里开始,为这个主题奠定一个良好的、坚实的基础。
https://stackoverflow.com/questions/8912812
复制相似问题