相关疑难解决方法(0)

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

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

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

要么

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

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

database-design calendar

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

设计问题:您将如何设计定期事件系统?

如果您的任务是构建支持重复事件的事件调度系统,您将如何做?如何删除定期活动时的处理方式?你怎么能看到未来事件何时发生?

即在创建活动时,您可以选择"每日重复"(或每周,每年等).

请回复一个设计.我已经习惯了Ruby/Rails,但是使用你想表达设计的任何东西.

我在接受采访时被问到这个问题,并且无法提出我喜欢的非常好的回复.

注意:这里已经被问到/已经回答了.但我希望得到一些更实用的细节,详情如下:

  • 如果有必要能够对重复事件的一个实例进行评论或以其他方式添加数据,那该怎么办?
  • 事件更改和删除如何工作?
  • 你如何计算未来事件的发生时间?

calendar

47
推荐指数
2
解决办法
2万
查看次数

在数据库中表示"重复事件"的最佳方法是什么?

我正在尝试在C#中开发一个与调度程序和日历相关的事件应用程序,其关键要求是表示数据库中的重复事件.表示数据库中重复事件的最佳方法是什么?

更多细节:

在创建活动时,我也向某些用户发送邀请,并且只允许被邀请者在指定的窗口(会议持续时间)内登录会议,或者可能在被邀请者尝试登录时拒绝登录,比如5分钟前预定的会议开始.

c# sql database-design data-modeling

43
推荐指数
3
解决办法
2万
查看次数

使用 Javascript 和 PLV8 在 Postgresql 中计算重复事件

我已经阅读了大约 20 篇关于重复事件数据建模选项的不同帖子,并最终确定了一个实现,但在最终细节方面仍然需要一些帮助。

首先,这里描述了我要完成的任务和要求:

  • 我正在使用 Postgres 9.4
  • 我将它托管在 Amazon RDS 上,它只允许有限数量的预先审查的扩展。

显然,我的应用程序的很大一部分是基于调度的。具体来说,我系统的这个组件允许企业客户安排家庭服务的约会。这些约会可以是单次发生的,也可以是重复发生的。虽然这些约会是典型的,因为它们有开始/结束时间等,但每个约会也有与之相关的数据。该数据可能包括诸如入住时间、退房时间、备注等内容。

为了存储重复约会,我的选择是要么在预定时间点生成每个实例,然后在这些实例运行时在数据库中生成新实例,要么即时计算要返回的这些实例。我最终选择了后者,因为我认为从长远来看,该实现更清洁,更易于维护。

话虽如此,根据这篇文章的见解,我选择将我的重复模式存储为 RRULE 字符串,并使用 PGV8 和rrule.js库进行任何计算。那篇文章提到了物化视图的使用(阅读了它们,但从未使用过),但我不确定它是否适用于我的情况,因为我必须在定期约会更改或创建时重新生成这些。似乎我还需要为每个业务创建一个实体化视图,并且不确定这会如何影响存储/性能,因为可能有 1000 个业务。如果您对此有任何见解,请告诉我。

这个想法是有一个表,Appointment,其中包含与约会的实际日期、时间和重复(如果适用)相关的数据。它将至少包含以下字段:

  • 开始日期
  • 结束日期
  • 重复模式 (RRULE)
  • 例外
  • 服务编号

然后,第二个表,AppointmentData,将存储有关约会本身的任何元数据。例如,它可能包含以下字段:

  • 预约 ID(FK 给家长)
  • 笔记
  • 登记时间
  • 退房时间
  • 等等。

AppointmentData当实例只会产生Appointment实际上是由服务提供商启动。

一般来说,我只需要能够在任何给定时间检索 31 天或更少的约会(除了检索单个实例)。也就是说,我的想法是能够将开始和结束日期传递给数据库,该数据库将找到该范围内所有约会的单次出现。此外,对于包含重复模式的任何记录,我将使用我的 PLV8 函数返回该范围内的日期列表。该rrule.js 库有一个函数可以返回重复模式 ( rule.between(new Date(2012, 7, 1), new Date(2012, 8, 1))) 的所有日期。

这是我有点磕磕绊绊的地方。现在我在数据库中有一个可以动态计算重复日期的函数,我有点不清楚如何将这些与单个事件“融合”在一起并将它们作为单个结果集返回。请注意,对于每个重复出现的实例,我还需要返回表中的所有列Appointment,例如serviceID.

如果有什么不清楚的,请告诉我。

提前致谢!

javascript sql postgresql

6
推荐指数
1
解决办法
1100
查看次数

"重复任务"的设计选项

我正在编写一个处理人员任务的小应用程序.非常简单,但就桌面设计而言,我所坚持的区域是一个重复性任务的情况,可以是一次性,每天,每周或每月.如果每周一次,那就是特定的一天,每周一次.每月是特定的一天.

我有一个任务表和一个recurring_type_id,并且将在代码中处理重复的任务,但这是理想的方法吗?另一种方法是在创建任务时插入所有任务 - 每个事件时间.但这似乎也不正确.

任何人都可以就设计提出建议,以及如何以可维护和有效的方式处理这个问题?

我正在使用SQL Server 2008 R2

sql sql-server

5
推荐指数
2
解决办法
6614
查看次数