繁体   English   中英

如何最好地处理重复日历事件的异常

[英]How to best handle exception to repeating calendar events

我正在开展一个需要我实施日历的项目。 我正在尝试提出一个非常灵活的系统:可以处理重复事件,重复事件的异常等。我已经查看了iCal,Lotus Notes和Mozilla等应用程序的模式,以了解如何开始实施这样一个系统。 目前我无法确定处理重复事件异常的最佳方法是什么。 我已经使用了相当多的数据库,但没有真正优化所有内容的经验,所以我不确定我考虑的两种方法在整体性能和查询/搜索能力方面是最优的:

  1. 打破重复事件。 因此,在重复事件的当前行上更改结束日期,插入带有异常的新行,并添加继续旧序列的另一行。
  2. 只需添加例外。 因此添加一个新行,其中一些字段指示它为覆盖。

所以这就是我无法决定的原因。 方法一将导致更多的行,因为每次编辑需要2个额外的行,而第二个方法仅对一行进行处理。 另一方面,我认为查找事件的查询会更简单,因此使用第一种方法可能更快(?)。 第二种方法似乎需要在应用程序服务器上进行更多计算,因为一旦获得数据,就必须删除两行的交集。 我知道数据库通常是网站的瓶颈,虽然我相信很多人都认为这很好,因为你的项目可能永远不会变得足够大,效率差异真的很重要,我仍然想实现最佳方案。 那么你们选择什么方法,或者你会做一些完全不同的事情?

另外,作为旁注,我将使用MySQL和PHP。 如果您认为其他技术更适合这种技术,特别是在数据库领域,请提及。

谢谢你的建议。

事件不是永久性的,可能会发生变化或终止。

您应该为事件中的每个日期插入一行,并在编辑重复事件时,提供编辑事件的所有实例或仅编辑一个事件的选项。

执行此操作时,您实际上只需要一个额外的字段来指示事件是否处于活动状态。

正确编制索引后,这不会对您的查询产生很大影响。

一个例子是:

SELECT * FROM events WHERE event_id = 123 AND active = 1;

在这种情况下,您需要索引event_id和活动列。

我决定只输入一行异常并使用代码将它们从重复集中删除。 在我完成它之前还需要一段时间,但我会尽量在这里发布一些性能结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM