表示数据库中复杂的计划重复

Dav*_*fer 10 database icalendar modeling calendar schedule

我试图在数据库中表示复杂的计划数据时遇到了一个有趣的问题.作为指导,我需要能够代表iCalendar - ics- 格式可以表示的全部内容,但是在数据库中.我实际上并没有实现任何与之相关的内容ics,但它提供了我需要能够为我的特定项目建模的规则类型的良好范围.

我需要允许基于每天多次,一周中的几天,一个月的一周,一个月,一年或这些的某种组合来允许表示单个事件或重复事件.例如,每年11月的第三个星期四,或每年的12月25日,或从11月2日开始的每两周一直持续到次年的9月8日.

我不关心插入效率,但查询效率至关重要.我最常做的操作是提供单个日期/时间或日期/时间范围,并尝试确定定义的时间表是否与日期/时间范围的任何部分相匹配.其他操作可能会更慢.例如,在2010年1月15日上午10:00到2010年1月15日上午11:00,查找至少部分时间匹配的所有计划.(即10:30 - 11:00的时间表仍然匹配.)

有什么建议?我看一下如何在RDBMS中表示预定事件?但它不包括我想建模的重复规则类型的范围.

Dav*_*fer 4

最后,这篇文章是最有帮助的:

iCal“字段”列表(适用于基于 iCal 标准的数据库架构)

我们决定完全遵循 iCal 模型,因为编写该标准的人对问题领域有很好的感觉。