【发布时间】:2011-01-29 17:31:27
【问题描述】:
我正在开展一个需要我实施日历的项目。我正在尝试提出一个非常灵活的系统:可以处理重复事件、重复异常等。我查看了 iCal、Lotus Notes 和 Mozilla 等应用程序的架构,以了解如何着手实施这样的系统。目前,我无法确定处理重复事件异常的最佳方法是什么。我已经使用了很多数据库,但是在真正优化所有内容方面没有大量经验,所以我不确定我正在考虑的两种方法中的哪种方法在整体性能和查询/搜索能力方面是最佳的:
- 中断重复事件。因此,为重复事件更改当前行的结束日期,插入一个新行(例外),然后添加另一行继续旧序列。
- 只需添加一个异常。因此,添加一个带有一些字段的新行,将其指示为覆盖。
所以这就是我无法决定的原因。方法一将导致更多的行,因为每次编辑需要 2 额外的行,而第二种方法仅与一行相对。另一方面,我认为查找事件的查询会简单得多,因此使用第一种方法可能更快(?)。第二种方法似乎需要在应用程序服务器上进行更多计算,因为一旦获得数据,就必须删除两行的交集。我知道数据库通常是网站的瓶颈,虽然我相信你们中的很多人都认为这两者都很好,因为你的项目可能永远不会变得足够大,以至于效率差异真的很重要,但我仍然想实施最佳解决方案。那么你们会选择什么方法,还是会做一些完全不同的事情呢?
另外,作为旁注,我将使用 MySQL 和 PHP。如果有其他您认为更适合此的技术,尤其是在数据库领域,请提及。
感谢您的建议。
【问题讨论】:
标签: php mysql database-design calendar performance