相关疑难解决方法(0)

日历重复/重复事件 - 最佳存储方法

我正在构建一个自定义事件系统,如果你有一个如下所示的重复事件:

活动A从2011年3月3日起每4天重复一次

要么

活动B于2011年3月1日星期二每2周重复一次

如何以一种易于查找的方式将其存储在数据库中.如果有大量事件,我不希望出现性能问题,在渲染日历时我必须经历每一个事件.

database-design calendar

291
推荐指数
9
解决办法
13万
查看次数

显示下一个活动日期

用于存储事件和事件元数据的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)

事件数据是 事件

事件元数据是 Events_Meta表

我跟着重复日历事件和一些最终的数学,我写了下面的查询

列出所有在结束日期之前的事件日期

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)

sql sql-server sql-server-2008

11
推荐指数
1
解决办法
4193
查看次数