【发布时间】:2012-06-08 14:57:24
【问题描述】:
这与我的上一个问题相似,但更归结为问题。
我正在设计一个系统来安排任务;大多数时候重复的任务。例如,用户可以将“扫地”安排在每周的周一、周三和周五进行。
我可以从日程表中判断某项任务是否应在任何特定日期完成,最重要的是我可以判断它是否应在当天完成。然后我必须向工作人员显示当前任务的列表(并将其发送到站点周围的手机)。
然后用户表明他们已经开始了任务(所以我们需要一个状态 Task-Started)以及他们何时完成了一项任务(Task-Worked)。如果工人没有很好地完成工作,检查任务的人可以“失败”它,进入结束状态任务失败。一个任务也可以有其他一些状态,但这对于这个问题的范围来说应该足够了。
我想知道是否应该在数据库中创建每个任务发生的实例,从而允许我针对那个特定实例存储状态 的任务。我想另一种看待它的方式是我在数据库中创建“到期”的初始状态,或“今天到期”以及它到期的实际日期时间(或至少是机会窗口的日期时间)做任务)。
但是 - 这种状态可以总是派生出来,因为这是我从中生成“今天的”任务列表的地方,所以它确实感觉像是一个规范化错误 - 感觉就像我在重复数据无论如何都可以推导出来。
优点:
它将允许生成的“到期”任务有一个准确的日期时间,从而保护它免受只会影响未来几天的日程安排的更改(尽管我的日程安排历史表允许我得到旧数据)。
可以调整特定日期的日程安排,以防当天发生异常情况。
它在数据库中创建一个正式的状态,而不是派生它(我是不是编的?)。
缺点:
- 需要一个后台进程来生成这些实例(或生成“到期”或“今天到期”状态,具体取决于您如何看待它)。
我想我的问题归结为:
1) 如果日程表只是一个确切的日期时间列表,则不会有任何问题,因为每个条目都描述了任务本身。事实是:这个日期时间的这个任务。一旦该任务完成,我们就会针对它存储事实。
2) 然而,重复计划只是描述了每个任务应该在什么时候,而不是描述实际发生的时间。
我希望这是有道理的。想法?
【问题讨论】: