2009-07-19 147 views
1

下午好,版本实体的最佳实践?

我目前处于一个用.Net编写的新项目的早期阶段,并且使用实体框架进行数据持久化/存储。要求的功能之一是能够“版本化”某些模型类型。例如。一个模型就是一个'需求',它将具有n个需求版本,基本上有一种方法可以回溯该特定'需求'实例的历史/生命周期。唯一需要在所有修订版本中保持静态的是“ID”,在整个需求的整个生命周期中,其他一切都是绝对可变的。

现在问题是,我是否应该简单地在需求>> RequirementVersion之间建立1:n的关系?其他功能需要的是可以完全复兴旧状态成为当前/最新的状态,必须有能力进行次要和主要版本(变化)等,最后但并非最不重要的是能够创建一个“基线”一组最新版本的要求将在稍后的时间点返回到特定的基线并显示所有包含的RequirementVersions?

这有可能扩展到几百万条记录的要求,他们每个人有一对夫妇一千版本..这就是为什么特别我问..一个简单的1缩放方面:N的关系等

有没有人做过类似的东西,也许一些建议/最佳实践等版本/基线等?

干杯&感谢, -Jörg

回答

0

这取决于每个要求多少数据了。

如果需求有大字段(例如需求描述)。

  1. 您可能想版本字段,而不是要求本身。不幸的是,似乎没有简单的方法来处理实体框架。
  2. 其他解决方案(我们为CMS做了这样的工作)是为Requirement和Requirement Description提供单独的表格。因此,您将拥有RequirementVersions和RequirmentDescriptionVersions。

如果需求足够小,可以使用Requirement >> RequirementVersion。在大多数情况下,你不会有重大的数据增长,特别是你可以利用SQL2008压缩。