我需要开发一个支持“时间表”的应用程序。时间表示例:
如果您已经看过Outlook的调度程序,那基本上就是我需要的。以下是其UI的屏幕截图:http://www.question-defense.com/wp-content/uploads/2009/04/outlook-meeting-recurrance-settings.gif
我如何在数据库中建模此类信息?请记住,我还需要查询,例如:
我正在使用PHP / MySQL,但我对其他解决方案持开放态度。建议?
答案 0 :(得分:3)
我个人的意见是分别创建所有活动,包括开始和结束日期。然后为事件生成唯一标识符(可能是您创建的第一个事件ID)并将其分配给所有事件(因此您知道它们以某种方式链接)。
优点:
缺点:
- 从这里追加 -
拟议模型:
id
big int (自动增量)ref_id
big int (这是 id 的外键)date_start
日期 date_end
日期 title
字符串 saved_recurrence
文字 想象一下,每周三和周五有一个重复4周的活动:
ref_id
= 0和saved_recurrence
= 保存的JSON对象在表事件上创建第一个事件并获取 id 使用(自动递增)ref_id
= id ref_id
创建下一个事件(此处saved_recurrence
可以为空)您现在应该有8个具有相同ref_id
的事件(每周2个,持续4周)。这样,在任何日期间隔中都可以轻松获取事件。当您需要编辑活动时,只需检查ref_id
即可。如果它 0 则是一个孤立的事件。如果没有,您有一个ref_id,您可以搜索以获取所有事件实例。