2009-11-02 54 views
8

我需要實現與Microsoft Outlook提供的功能類似的功能,以使您的會議預約經常發生。我試圖找出我將需要實現此功能的優化數據庫設計。用於存儲事件經常發生的詳細信息的數據庫設計

需求是這樣的,用戶輸入的每個運行或任務也適用於調度,如每週,每月或每年的經常性事件。你能否建議我使用數據庫模型 - 表格結構(有約束條件)將這些細節存儲在數據庫中,然後由程序訪問以執行相應的任務。有關可能的調度程序詳細信息的屏幕截圖可以在following link找到。

我們有一個mysql數據庫在後端運行,用於存儲這些細節。一旦用戶提交請求,請求的詳細信息將被存儲在表中,然後程序將採取與其相對應的操作。更多的解釋是,用戶的意圖是運行一個sql腳本,獲取值並對其進行統計分析。但是,由於oracle引用數據庫由許多用戶動態更新,他希望以循環方式運行它並完成分析。請注意,MySQL數據庫和參考數據庫是不同的。

如果您需要任何其他詳細信息,請讓我知道。

+0

您是否在速度,可靠性,可訪問性,可擴展性或其他方面進行了優化?這聽起來像可訪問性是您最關心的問題。 –

回答

9

我建議將第一次出現的細節存儲在一個表(計劃任務)中,然後在另一個表中存儲反覆(重複任務)細節。

隨着每項任務的完成,我還可能會試圖在下一次發生時更新計劃任務表。

爲表佈局,草圖將如下所示:

[ScehduledTasks]
任務id(主鍵)
說明和詳細信息等...
開始日期時間
結束日期時間

[RecurringTasks]
任務id(外鍵)
頻率:每日,每週,每月或每年。
DayNo :每x周,月等
WeekOfMonth :何日到(1-7周,1-31每月,1-365爲每年)
間隔跑第一,第二,第三等...如果填充,則DayNo指定本週的的日期。
MonthOfYear :1-12。
EndDatetime :最後日期進行
OCCURENCES :次執行的次數。如果這和以前的值是null,那麼永遠執行。

根據任務設置的方式,明顯的某些字段將爲空白,但我認爲上述內容涵蓋了在Outlook中模擬任務所需的全部內容。

+0

這就是我的想法,但我不知道如何存儲或更恰當地代表用戶輸入的重複時間表 - 例如,如果用戶選擇「每月 - >每個星期一」作爲他的重複請求,然後如何存儲這些細節在數據庫中,以便程序可以訪問這些細節,並同樣安排任務。 – kshitij

+0

此刻只是格式化一些建議 – Martin

+0

這對我有很大的幫助,謝謝Martin。 – kshitij