2013-06-22 82 views
2

我正在開發可用性日曆。可預訂的事件可能有一個或多個可用於預訂的資源,並且事件可以反覆出現並具有一些基本功能,例如編輯循環事件的一個實例等(例如Google Calendar)。日曆還應該能夠存儲預訂。預訂日曆模型設計

示例:每個星期一在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

通常,在數據庫設計中,要分離出組件並將它們與不同的鍵關聯起來。我假設你知道這方面的基礎知識。

所以,我最初的想法是:

活動,與事件細節表 - 和EID(事件ID)

用戶,與用戶信息表 - 和UID(用戶ID)

重複出現,一個包含循環事件的表格,其中包含eid和uid,以及其他相關信息,例如重複模式(我會使用枚舉)。

你不想把所有東西放在一張巨大的桌子上,因爲它會讓人頭疼,分離關注點可以讓你稍後進行縮放。

您的查詢將是簡單的連接,並將用於查找數據(如日期和用戶)的字段上的索引,以便搜索更快,但不要發瘋,因爲它會導致插入緩慢。

希望這會有所幫助。

+0

沒有不是真的我在找什麼。 – loddn

+0

Zach你可以發佈一個SQL示例,我正在尋找類似的東西,沿着你的建議來使用DDay – aggie

+0

先嚐試使用GUI,然後看看show create table語法。什麼是DDay(諾曼底?)? –