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

标签 database calendar modeling icalendar 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 的时间表仍然匹配。)

有什么建议吗?我看了How would one represent scheduled events in an RDBMS?但它不涵盖我想要建模的重复规则类型的范围。

最佳答案

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

iCal "Field" list (for database schema based on iCal standard)

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

关于database - 表示数据库中复杂的计划重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3032506/

相关文章:

ios - 如何修复 EKErrorDomain Code=1“未设置日历

ios - 清除核心数据数据库的所有实体,除了一个实体

android - 使用无操作应用程序托管数据库,以便精简版和专业版可以访问

java - 将时间重置为午夜会减去一天

database - Django 模型通用建模

python - pyLDAvis concat() 得到意外的关键字参数 'sort'

UML - 如何建模一个/或/两个(联合)概念?

java - 将 paradox/borland 数据库作为单个文件打开

c# - In Code first The INSERT 语句与 FOREIGN KEY 约束冲突

java - 我们可以在java中设置特定的时间吗