Database design 无限周期日历事件的数据库设计
从数据库的角度来看,考虑到以下因素,最好的实现/设计是什么:Database design 无限周期日历事件的数据库设计,database-design,calendar,recurring-events,Database Design,Calendar,Recurring Events,从数据库的角度来看,考虑到以下因素,最好的实现/设计是什么: 无限期的重复日历事件(无结束日期)?显然,为每个事件填充数据库记录是没有意义的 创建定期事件后,编辑违反定期规则的单个事件的最佳方法是什么?例如,“每周一上午9:00”,但有一个特定的周一需要在上午10:00开始 很难在完全没有细节的情况下建议对模式进行更改,但这里有一种方法。你所拥有的是一个条目,上面写着“从今天起,会议时间就在这一天的这个时候。” 从计划的第一天1月1日开始,会议于周一上午9点举行。然后,从生效前的周二开始,下周一
很难在完全没有细节的情况下建议对模式进行更改,但这里有一种方法。你所拥有的是一个条目,上面写着“从今天起,会议时间就在这一天的这个时候。” 从计划的第一天1月1日开始,会议于周一上午9点举行。然后,从生效前的周二开始,下周一(20日)的会议将在上午10点举行。从21日开始,会议时间恢复到上午9点 完成这项工作的查询看起来有点复杂,但遵循逻辑,应该是显而易见的
select Dow "Day of meeting", Time
from MeetingSchedule ms
where ms.EffDate =(
select Max( ms1.EffDate )
from MeetingSchedule ms1
where ms1.EffDate <= Today()
);
但在更改会议日期之前,最后一次会议之后的任何日期都将给出正确答案。如果从那时起时间改为上午10点,只需删除最后一行,这会将其恢复为上午9点
我添加了星期几,但如果您知道会议绝对、始终在星期一举行,则可以将其省略。很难在完全没有细节的情况下建议对架构进行更改,但这里有一种方法。你所拥有的是一个条目,上面写着“从今天起,会议时间就在这一天的这个时候。” 从计划的第一天1月1日开始,会议于周一上午9点举行。然后,从生效前的周二开始,下周一(20日)的会议将在上午10点举行。从21日开始,会议时间恢复到上午9点 完成这项工作的查询看起来有点复杂,但遵循逻辑,应该是显而易见的
select Dow "Day of meeting", Time
from MeetingSchedule ms
where ms.EffDate =(
select Max( ms1.EffDate )
from MeetingSchedule ms1
where ms1.EffDate <= Today()
);
但在更改会议日期之前,最后一次会议之后的任何日期都将给出正确答案。如果从那时起时间改为上午10点,只需删除最后一行,这会将其恢复为上午9点
我增加了一周中的某一天,但是如果你知道会议绝对,总是在星期一,那么你可以省略它
select :DateOfInterest "Week starting", Dow "Day of meeting", Time
from MeetingSchedule ms
where ms.EffDate =(
select Max( ms1.EffDate )
from MeetingSchedule ms1
where ms1.EffDate <= :DateOfInterest
);
Week starting Day of meeting Time
03/05/2017 Mon 0900
03/12/2017 Mon 0900
03/19/2017 Mon 1000
03/26/2017 Mon 0900