首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >归档理论

归档理论
EN

Stack Overflow用户
提问于 2012-01-18 23:31:15
回答 2查看 199关注 0票数 3

我将要建立一个新的数据库,它需要包括仍然可以访问的记录的存档。记录都与某些项目相关联,当项目存档时,我希望记录保持不变,即快照。(例如,如果联系人与已存档的项目相关联,而他们在一年后搬家,我希望它仍然保留旧地址。)存档的记录不需要更新,但它们需要是可访问的。

我有一个想法,但我不确定这是否是最好的方法:每个表的副本将“存档”所有的东西,然后当将一个项目存档时,所有的FK/PK关系都将被更新,尽管这看起来是一个繁琐的过程。

我的另一个想法是,每个项目(即联系人)将分配一个PK,然后每个项目将有一个二级关键字,然后将与每个项目相关联。这样做的主要问题是,如果联系人更新了实时项目,则似乎很难,需要进行大量更新。

如果你有任何问题请告诉我。

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2012-01-18 23:41:12

嗯..。我唯一一次遇到这样的事情时,有一个想法是在应用层解决它,而不是在数据库上。

例如,对于ruby,您可以使用vestal_versions或书面记录。

例如,Paper-trail将所有对象的版本存储为单个表中的序列化对象,并与增量一起使用。

票数 0
EN

Stack Overflow用户

发布于 2012-01-18 23:54:20

您正在寻找的是在域数据的同时包含时态数据。这类事情并不是一项微不足道的任务,而且通常会导致需要支持它的应用程序变得非常复杂。

有许多方法可以做到这一点,每种方法都有其优缺点,您选择的方法将取决于您需要如何处理数据的时间元素。其中一些包括:

  1. 审核跟踪
    • 您可以跟踪一段时间内对记录所做的更改,主记录会反映其当前状态
    • 将重复数据减少到最低限度
    • 可能不适合您正在寻找的快照模型

  1. 最新的
    • 您对一个实体的每个“版本”都有一条记录,该记录的时间戳为“created
    • Makes”很容易跳回到某个时间点
    • 拥有最多的数据分支可以轻松地“分支”一个实体

Martin Fowler写了一些关于设计处理时态数据的模型的文章,所以我将从那里开始,为这个主题奠定一个良好的、坚实的基础。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8912812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档