- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想写一个日历应用程序。确实是重复出现的项目给数据库模式的工作带来了麻烦。我希望就如何组织这件事提供一些意见。
如果用户创建了一个事件,并输入它在星期一重复每个人,直到永远,会怎样?我如何将所有这些存储在数据库中?我不能创造无限的事件。我是否只是在其中放置一个包含相关信息的表格,以便我可以计算出所有事件的去向?如果是这样,每次用户查看日历的新部分时我都必须计算它们。如果他们逐月翻页,但有大量重复出现的项目怎么办?
此外,当用户单击一个项目并说“编辑序列中的这个”时,模式需要处理,而不是序列中的所有项目。然后我是否将序列中的一项拆分出来?
更新 1
我根本没看过 iCal。需要明确的是,我认为保存允许您计算重复项目的信息,并分离出任何与序列不同的信息是存储它以便能够传输它的好方法。但我认为在应用程序中,这太慢了,无法在所有地方进行日期计算。
最佳答案
我一直在为同样的问题而苦苦挣扎,我实际上是在玩弄上面建议的“缓存表”想法,但后来我遇到了一个似乎还没有被代表的替代方案 ( suggested here )。
建立一个包含所有事件的表
EventID (primary key)
Description
StartDate
PeriodType - days, weeks, months, years
PeriodFreq - # of days, weeks, etc between events
EndDate
... other attributes that can be modified
然后为这些事件的异常(exception)情况 添加一个表格。此表使用复合键,由映射到事件表的 EventID 和用于选择系列中特定事件的实例 ID 组成。
EventID (key)
InstanceID (key)
InstanceDate - the modified date of the exception
IsCancelled - a flag to skip this date when traversing the series
... other attributes that can be modified
它似乎使事件表保持规范化,并避免拆分系列来处理异常。
关于database - 为日历应用程序布置数据库模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/947272/
首先,这或多或少是我的第一个 GUI,而且我学习 Java 的时间不超过一周,因此它可能包含一些严重的编程错误。 我现在拥有的是:按钮和标签是 OptionPanel 的一部分,位于左侧,Drawin
当窗口大小调整时,Windows 会发送几条消息: WM_GETMINMAXINFO WM_ENTERSIZEMOVE WM_EXITSIZEMOVE WM_NCCALCSIZE WM_SIZING
我的问题:我有一个使用 UINavigationController 的用户入职流程介绍入职流程中的每个步骤。使用 UISearchBar 推送 View Controller 时在其中,UISear
我是一名优秀的程序员,十分优秀!