【发布时间】:2019-11-21 04:36:54
【问题描述】:
我正在尝试建立一种管理活动和活动出席的方法。
我有一个events 表,其中包含以下相关字段:
id BIGINT NOT NULL UNIQUE
starts_at TIMESTAMPTZ NOT NULL
ends_at TIMESTAMPTZ
recurrence_days INT
recurrence_months INT
PRIMARY KEY(id)
有了这个,我可以得到“今天”或任意日期发生的单次发生或重复发生的事件。
不幸的是,我正在为如何处理活动出席问题而苦苦挣扎。我有一个events_attendance 表,其中有event_id(id 来自events 表)和user_id,但我不确定如何处理重复发生的事件。
有没有办法设计这样我就不需要“复制”事件?
【问题讨论】:
-
您的
events表中没有event_id,那么events_attendance表中的event_id指的是什么?我猜你是在捕捉个别与会者而不是计数? -
events_attendance 有一个
event_id,即 events.id -
更新了问题。谢谢!
-
如果 events_attendance 正在跟踪出勤率,为什么不根据日期和时间戳跟踪实际出勤率呢?您可以根据日期、月份、时间等分组定义和跟踪再次发生。但根据用户和日期时间戳,记录本身始终是唯一的。
-
关于重复事件,您需要另一个模拟重复事件的表。鉴于您必须涵盖有关日历的规则,因此定期安排可能很困难。当您由此生成
event记录时,您包含对recurringevent表的引用。
标签: sql postgresql database-design