我有一个具有以下结构的表:
event
- id
- date_start
- number_hours
- date_end
- specialist_id / specialist assigned to this event.
用户选择活动开始的日期和持续的小时数。现在所有这些事件都是非重复的,但我想添加重复事件的可能性。
我怎样才能以精心设计的方式做到这一点?我希望能够扩展这个设计,不仅支持每周和每月的活动,还支持每周日、周六或其他重复类型的活动......谢谢
我在考虑以下问题
事件
- id
- date_start
- recurring / whether the event is recurring or not
- weekly / (if repeats every 1 week, this will be 1, if repeats every 2 weeks, this number will be 2)
- monthly / (if repeats every 1 month, this will be 1, if repeats every 2 months, this number will be 2)
- last_occurred_date / date the event last occurred (if non-recurring, this equals date_start, if recurring, it does not)
- next_occurred_date / date when the event is supposed to occur next.
- specialist_id / what specialist took this event
因此,如果用户添加 2012 年 10 月 1 日的事件,每月重复一次,则将以下条目添加到表中:
date_start: 10/1/2012, recurring: 1, weekly: 0, monthly: 1 (it occurs every 1 month), last_occurred_Date: 10/1/2012, next_occurred_date: 11/1/2012)
而且我有一个 cron 工作,它基本上会遍历所有重复事件(其中 event.recurring = 1 并将条目添加到事件表中以获取即将发生的新事件。)
因此,该活动的下一个日期是 2012 年 11 月 1 日。添加了以下条目:
id: 1 date_start: 11/1/2012 recurring: 0
我为重复事件发生的每个日期添加一个条目的原因是因为我必须为每个事件分配一个专家。因此,专家会收到带有链接的电子邮件,他们可以在其中注册每个活动。