预订日历模型设计

时间:2013-06-22 15:07:01

标签: model

我正在开发一个可用性日历。可预订的活动可以有一个或多个可用于预订的资源,并且活动可以重复出现并具有一些基本功能,例如编辑定期事件的一个实例等(例如Google日历)。日历也应该能够存储预订。

  

示例:每周一10:00,直到2014年底,A单位有2   资源可用,但不是周一24/6。上周一UserX和   UserY在该事件上被预订,UserX没有出现。

我已经查看了一些针对重复事件的设计模式,但是无法找到一种优秀且优雅的方式来处理重复事件并将细节附加到单个事件中。

我已经完成了一些建模,我在事件中存储事件和重复,然后我必须为每个单独的事件创建一个EventDetails实例。

class Event {

    Date start
    Date end

    boolean isRecurring
    EventRecurType recurType // DAILY, WEEKLY ...
    Integer recurInterval = 1
    Date recurEnd
    Integer recurCount
    List<EventDetails> eventDetails // Id, start, end, BookingDetails et.c.
}

我确信有更好的方法可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

通常,在数据库设计中,您需要将组件分离出来并将它们与不同的键相关联。我假设您了解相关的基础知识。

所以我最初的想法是:

事件,包含事件详细信息的表格和eid(事件ID)

用户,包含用户详细信息的表格和uid(用户ID)

重复发生,一个包含重复事件的表,用eid和uid键入,以及其他相关信息,例如重复发生模式(我使用枚举)。

你不想把所有东西放在一个巨大的桌子里,因为它会让你感到头疼,关注点的分离让你可以稍后进行扩展。

您的查找将是简单的连接,并将索引放在将用于查找数据的字段上,例如日期和用户,以便搜索更快,但不要发疯,因为它会使插入变慢。

希望这有帮助。