任务报告的数据库模式

时间:2010-08-17 12:29:55

标签: database-design reporting progress-reports

我有一个任务跟踪应用程序,这是非常基本的。它目前有许多任务,当任务完成时,进度会更新,从0到100%。

问题是,这些数据都是非常短暂的,我想在任务的顶部添加报告,例如:

  • 两个日期之间添加的任务数
  • 两个日期之间完成的任务数
  • 两个日期之间的努力量(因此这是针对任务的总工作量除以100,并按完成百分比的变化计时)

等等。

如何及时冻结数据以便进行此类报告?

这些是我到目前为止所想到的想法:

创意1.不要更改任务定义,而是添加一个“TaskProgress”表,其中包含对任务进度的细化更新 - 然后您可以“总结”以获取当前状态或记录在两个日期之间看看这两个日期之间取得了多大进展。最重要的是,这将在报告要求的合理数量的变化中存活下来,不利的是获得任务的当前进度将需要更多的查询工作。

创意2.创建一个表来存储进度变化。每次更新任务时,还要添加包含由更改引起的计算班次的记录。然后,报告只是在所需日期之间选择记录并将它们相加的情况。好的一面是,这不会对现有功能产生太大影响,也不会产生过多的查询工作,如果不包含要添加到报表中的信息,则必须更改此表。

创意3.创意3将是从创意1创建“TaskProgress”表,但仍然保持对任务的总计当前进度。它确实意味着任务进度项的总和再次作为总计存储在任务本身上,但读取这些值比计算它们更快,并且它为以后更改报告提供了更大的灵活性。

非常欢迎任何关于这些想法的评论或更好的建议。

1 个答案:

答案 0 :(得分:0)

我不确定我理解您的想法,但如果问题是能够报告瞬态数据那么为什么不使用数据库的副本?出于性能原因,我们总是正常报告副本,但它可以解决您的问题。备份数据库,然后将其还原到另一个数据库,执行报告,然后删除数据库。