我正在构建一个自定义事件系统,如果你有一个如下所示的重复事件:
活动A从2011年3月3日起每4天重复一次
要么
活动B于2011年3月1日星期二每2周重复一次
如何以一种易于查找的方式将其存储在数据库中.如果有大量事件,我不希望出现性能问题,在渲染日历时我必须经历每一个事件.
用于存储事件和事件元数据的UI设计是

SQL TABLE DESIGN是
CREATE TABLE [dbo].[EVENTS]
([ID] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](255) NOT NULL)
Run Code Online (Sandbox Code Playgroud)
和
CREATE TABLE [dbo].[EVENTS_META](
[ID] [int] IDENTITY(1,1) NOT NULL,
[event_id] [int] NOT NULL,
[meta_key] [varchar](255) NOT NULL,
[meta_value] [bigint] NOT NULL)
Run Code Online (Sandbox Code Playgroud)
事件数据是

事件元数据是 
我跟着重复日历事件和一些最终的数学,我写了下面的查询
列出所有在结束日期之前的事件日期
SELECT EV.*
FROM events AS EV
RIGHT JOIN events_meta AS EM1 ON EM1.event_id = EV.id
RIGHT JOIN events_meta AS EM2 ON EM2.meta_key = 'repeat_interval_'+ CAST(EM1.id as Varchar(100))
WHERE EM1.meta_key = 'repeat_start'
AND ((1391040000 - …Run Code Online (Sandbox Code Playgroud) 我正在开发一个(我打算成为)简单的PHP / MySQL应用程序。作为其一部分,我希望能够对重复事件进行建模,但是我需要能够查询两个日期之间发生的所有事件(包括重复事件)。事件只有一个日期,一天中的时间无关紧要。
我一直在对此进行研究,并研究了各种方法,包括 日历重复/重复事件-最佳存储方法和重复日历事件以及一些最终的数学方法。
但是,我在网上找到的任何支持此功能的数据库架构示例都似乎仅支持查询某天发生的事件。不支持在日期范围之间发生的事件。
作为一个抽象的例子
事件表(具有某种重复表示):
Event | Start Date | Repeats
-------------------------------------
Meeting | 10/Dec/2012 | Every 7 days
Lunch | 10/Dec/2012 | Every 1 days
Run Code Online (Sandbox Code Playgroud)
抽象查询的目标结果SELECT Events BETWEEN 09/Dec/2012 AND 20/Dec/2012
Event | Date | Repeats
-------------------------------------
Meeting | 10/Dec/2012 | Every 7 days
Meeting | 17/Dec/2012 | Every 7 days
Lunch | 10/Dec/2012 | Every 1 days
Lunch | 11/Dec/2012 | Every 1 days
Lunch | 12/Dec/2012 | Every …Run Code Online (Sandbox Code Playgroud)