【问题标题】:Recurring Events In a Series系列中的重复事件
【发布时间】:2021-07-01 09:29:06
【问题描述】:

我已经成功整合了这个问题的答案: Calendar Recurring/Repeating Events - Best Storage Method

但是,现在想到一个问题。如果用户想要编辑系列中的单个事件发生怎么办?或删除事件发生。这需要自行处理,而不是链接回其父 ID。或者例如,如果用户想在特定事件上留下注释......

目前我唯一能想到的是将每个重复发生的事件存储在自己的行中,我认为这不是一个好主意。

但无法找到替代方法。我想从理论的角度而不是特定的 sql 或编程语言来获得意见。

【问题讨论】:

  • 为什么没有一个单独的表,它可以覆盖主表,例如,如果表 B 中的记录显示给定实例的重复项已被删除或修改,则使用它来确定您的其他操作使用主表中的内容。换句话说,当需要为重复项目的 1 个实例更改某些内容时,只需在表 B 中添加一条记录。
  • 您好,感谢您的快速评论,但是您如何参考主要事件表?还说重复参数从每天变为每周,你还能保持这种关系吗?假设用户在第三天添加了一个事件的注释,并且原始事件被设置为“每日”重复。然后更新为每周...
  • 每日到每周的变化将发生在主表中,因为事件从每日变为每周,否则它将被完全删除并插入新记录作为每周提醒。至于注释,如果它是为一个实例添加的(一周的第 3 天),该实例将不再发生,因为它被切换到每周,所以我不确定你将如何处理它。您可以随时将注释移至下一个通知,或者在允许更改为每周之前警告用户?

标签: sql calendar


【解决方案1】:

要实现这一点,您可以引入一种新类型的事件,它只是将附加数据添加到属于事件系列的元素。从技术上讲,您存储对单个事件发生所属的事件系列的引用。这样,您将能够维护事件系列和覆盖事件发生之间的关系。而且,如果事件系列的日期/时间参数以排除特定事件发生的方式发生变化,您只需从事件中删除对该系列的引用,将其转换为单个实例。

【讨论】:

  • 感谢@Sideways 的回答。我想我明白你在说什么,但我目前有两个表:1)Events 和 2)EventsMeta 你建议我添加一个新表 3)EventExceptions,它有一个指向事件 Id 的外键?如果是这样,您如何指定要覆盖的时间/日期槽?
  • 通过使用专用表或在主表中具有附加属性,在这两种情况下,您都将获得对事件系列的引用,但当然您还需要存储专门的日期/时间,以便能够首先将其映射到单个事件发生。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-05
  • 2012-02-11
  • 1970-01-01
  • 1970-01-01
  • 2018-05-03
  • 2019-06-30
  • 1970-01-01
相关资源
最近更新 更多