【发布时间】:2010-08-17 12:29:55
【问题描述】:
我有一个非常基础的任务跟踪应用程序。它目前有许多任务,进度会随着任务完成而更新,从 0 到 100%。
问题是,这些数据都是非常短暂的,我想在任务的顶部添加报告,所以像:
- 两个日期之间添加的任务数
- 两个日期之间完成的任务数
- 两个日期之间的工作量(所以这是针对任务的总工作量,除以 100 并乘以完成百分比的变化)
等等。
您如何及时冻结数据以允许此类报告?
这些是我目前想到的想法:
想法 1. 永远不要更改任务定义,而是添加一个“TaskProgress”表,其中包含任务进度的粒度更新 - 然后您可以“总结它们”以获取当前状态或获取记录在两个日期之间查看两个日期之间取得了多少进展。好处是,这将在报告要求的合理变化中存活下来,坏处是获得任务的当前进度将需要更多的查询工作。
想法 2. 创建一个表来存储进度更改。每次更新任务时,还要添加一条记录,其中包含由更改引起的计算班次。然后,报告只是选择所需日期之间的记录并将它们汇总的情况。好的一面是,这不会对现有功能产生很大影响,也不会造成太多的查询工作,缺点是如果该表不包含您想要添加到报告中的信息,您将不得不更改它.
想法 3。想法 3 将根据想法 1 创建“TaskProgress”表,但仍保持针对任务的总当前进度。这确实意味着任务进度项的总和再次作为总数存储在任务本身上,但读取这些值比计算它们更快,并且为以后更改报告提供了更大的灵活性。
非常欢迎任何关于这些想法的 cmet 或更好的建议。
【问题讨论】:
标签: database-design reporting progress-reports