我正在尝试确定在MySQL数据库中存储事件时间的最佳方法.这些应该尽可能灵活,能够代表"单一事件"(在特定时间开始,不一定需要结束时间),"全天"和"多日"事件,重复事件,重复全天事件,可能是"本月第3个星期六"类型的活动等.
请建议一些经过验证的数据库方案.
表:事件
StartTime(dateTime)
EndTime(dateTime)为null,没有结束时间
RepeatUnit(int)null = noRepeat,1 =小时,2 =天,3 =周,4 = dayOfMonth,5 =月,6 =年
NthDayOfMonth(int)
RepeatMultiple(int)例如,将RepeatUnit设置为3,并且每两周设置为2
Id - 如果需要,StartTime可能适合您唯一标识事件.
名称(字符串) - 如果需要,为事件指定的名称
这可能有所帮助.它需要相当数量的代码才能解释重复的时间.必须忽略分辨率低于重复单位的部分时间字段.这个月的第3个星期六也不容易...... NthDayOfMonth信息仅仅是为了做这种功能所必需的.
与重复出现的地方所需的代码相比,这需要的数据库模式很简单.