存储经常性时间窗口的首选方法是什么?
例如。如果我有一个日历系统,我需要能够容纳每天,每周或每月重复的事件,什么样的时间管理系统是最好的?
如何在数据库中最好地表示这一点?
详细信息
其具体目标是提供一组打开时间窗口。一旦我们有了这些时间窗口,代码就需要测试到达系统的消息是否在某个时间窗口内。
发布于 2009-06-11 22:10:26
这是长期拖延,但经过大量的测试和许多心痛,我们决定了一个特定的方案,以使这一工作。为了满足我们系统的需要,我们只需要每周重复一次,如果有的话。最终产品将按此设计。
以下是DB模式
id : int(10)
window_name : varchar(100)
start_date : datetime
end_date : datetime
start_time : time
duration : int(10)
timezone: varchar(100)
monday : tinyint(1)
tuesday : tinyint(1)
...
sunday : tinyint(1)。
这是唯一允许窗口每周一次打开和关闭的系统,也是允许窗口持续到第二天早上的唯一系统。我相信外面有更复杂的系统,可以做循环窗口,但我们正在寻找一些灵活和快速的东西,不需要每月重复的事件或年度事件。
发布于 2008-10-11 06:45:37
我将创建一个RecurrenceType表,该表将保存日历系统支持的每种类型的递归记录。CalendarEvents表中的每个事件都将引用RecurrenceType表中的ID。
然后,我将在代码中有一个RecurrenceRules对象,它将保存计算下一个日期何时将被指定为当前日期或开始日期的业务逻辑,或者作为数组检索下一个N个日期。
大多数重复的逻辑可能都必须根据RecurrenceType表的ID对枚举值进行编码,除非它是一个非常简单的日历系统,否则如果您能够将所有数据驱动起来,我会感到惊讶。
希望这能有所帮助。听起来是个有趣的项目。
https://stackoverflow.com/questions/193707
复制相似问题