我有一个有趣的问题,试图在数据库中表示复杂的计划数据.作为指导,我需要能够代表iCalendar – ics – 格式可以代表的全部内容,而在数据库中.我实际上没有实现与ics相关的任何东西,但它给出了我需要为我的特定项目建模的规则类型的很好的范围.
我需要允许基于每天多次,一周中的几天,一个月,一年的这些或其某些组合允许表示单个事件或重复事件.例如,11月份的11月第3个星期四,或者是12月25日,或从11月2日开始的每两个星期,直到次年9月8日.
我不关心插入效率,但查询效率至关重要.我最常做的操作是提供单个日期/时间或日期/时间范围,并尝试确定定义的计划是否与日期/时间范围的任何部分相匹配.其他操作可能会更慢.例如,2010年1月15日上午10:00至2010年1月15日上午11:00,找到与该时间至少部分匹配的所有时间表. (即涵盖10:30至11:00的时间表仍然匹配.)
有什么建议么?我看着How would one represent scheduled events in an RDBMS?,但并不涵盖我想建模的循环规则类型的范围.
解决方法
最后,这篇文章是最有帮助的:
iCal “Field” list (for database schema based on iCal standard)
我们决定跟随iCal模型,因为那些写这个标准的人对问题领域有很好的感觉.