如何处理重复的日历事件和任务(SQL Server表和C#)

时间:2012-03-08 20:48:01

标签: sql sql-server database-design

我需要在我的数据库中安排事件,任务,约会等。其中一些将是一次约会,一些将重新发布“To-Dos”,必须检查。看了谷歌的日历布局和其他人之后,再加上我在这里做的很多阅读就是我到目前为止所做的。

日历表(可以称为调度表):Basic_Event标题,开始/结束,重新发送信息。

日历发生表:与计划表,发生特定文本,下一个发生日期/时间的关系????

在这里查看SQL Server如何完成其​​工作:http://technet.microsoft.com/en-us/library/ms178644.aspx   但这有点不同。

为什么有两个表:我需要跟踪重复任务的每个实例的状态。否则这会更简单......

所以...问题:

1)这似乎是正确的方法吗?有没有更好的方法来处理多重发生问题?
2)我应该多久/如何触发事件的创建?我真的不想创建一堆事件......但是......如果用户想要查看明年的日历怎么办...

3 个答案:

答案 0 :(得分:4)

将一个任务的日程安排定义放在一个表中,然后单独一个表分别记录每个实例 - 这是我过去采用的方法。

关于创建事件,可能没有必要预先创建它们。特别是当你考虑无限重复的任务时!同样,我过去使用的方法是仅创建下一个出现的方法。当该实例被操作时,然后计算并创建下一个实例。

这留下了查看未来事件的问题。为此,您可以从初始/下一个计划发生的事件开始,并在显示时即刻计算未来的事件。

答案 1 :(得分:0)

虽然这不是您问题的准确答案,但我之前在SQL Server中解决了这个问题(尽管这里的数据库无关紧要),可以通过基于Unix's cron的解决方案建模。

我们使用表中的整数列来存储各种时间单位,而不是字符串解析。

我们有可以安排的活动;他们可以指向表示不同时间点(日期/时间)的一次性计划表,也可以指向以cron为模型的经常性计划表。

另外请记住正确建模您的解决方案。事件具有持续时间但持续时间与计划无关(但事件的持续时间可能通过引起冲突影响计划)。不要试图将持续时间建模为计划的一部分。

答案 2 :(得分:0)

过去当我们这样做时,我们有2个表:

1)时间表 - >包括重复信息

2)例外 - >编辑/更改特定实例

使用SQL,可以获得在给定日期范围内至少有一个实例的“计划”列表。然后,您可以在GUI中展开每个实例所在的位置。