2010-05-07 57 views
1

我正在尋找最優雅和最安全的方法來執行以下操作。我有日曆和用戶組。用戶生成/用戶特定功能

用戶可以將事件添加到日曆上的特定日子,並指定每個事件持續多長時間。

我已經從用戶數請求添加爲他們定義特定長度的事件包括休息了一定的時間,或者需要特定的時間量事件之間留的能力。

例如,如果事件大於2小時,則包括20分鐘的休息時間。對於每個事件,需要在下一個事件開始前30分鐘。

已要求的> 2小時事件以包括20分鐘斷裂相同的基團,也可以要求一個事件>3小時包括一個30分鐘的休息。

最後,用戶試圖得到的是一個經過的時間,不包括爲他們計算的休息時間。目前我爲他們提供了一段總時間,但他們正在尋找一段跑步時間。

但是,這些請求中的每一個對於每個組都是不同的。在一個2小時的活動期間,一個小組可能需要30分鐘的休息時間,而另一個小組可能每個3小時的活動只需要10分鐘。

我有點想我可以將函數寫入每個組的php文件,然後包含該文件並通過php進行計算,然後向用戶返回一個計算出的總數,但有關這一點並不對跟我。

另一種方法是將groups函數輸出到javascript,並讓它運行在客戶端,因爲我已經返回了事件的持續時間,但是當用戶屬於多個不同規則的組的一部分時,這似乎可能變得相當混亂。

我目前在數據庫中存儲起始和結束時間,但沒有「持續時間」,我不認爲我應該將計算的總計存儲在數據庫中,因爲如果一個組決定更改計算,我需要在整個數據庫中進行更改。

是否有這樣做的更好的辦法? 我只是將變量存儲在mysql中,但我沒有看到我怎麼可以然後說根據這些變量來計算mysql。

我真的迷失在這裏。有什麼建議麼?我希望有人做了類似的事情,可以提供一些有關最佳方向的見解。

如果有幫助,我的表包含

 
eventid, user, group, startDate, startTime, endDate, endTime, type 

爲此我返回給用戶該事件的JSON是

 
{"eventid":"'.$eventId.'", "user":"'.$userId.'","group":"'.$groupId.'","type":"'.$type.'","startDate":".$startDate.'","startTime":"'.$startTime.'","endDate":"'.$endDate.'","endTime":"'.$endTime.'","durationLength":"'.$duration.'", "durationHrs":"'.$durationHrs.'"} 

其中例如,持續時間長度爲2.5和持續時間小時是2 :30。

回答

1

僅存儲的開始時間和結束時間的情況下,並命名爲notes BLOB字段。

我對這些各種各樣的需求的功能蔓延,直到遭遇的代碼和數據建模成爲什麼,但例外情況下,一個不可維護的集合幾個系統的工作。向代碼添加新的排列是很多工作,通常這些情況只能使用一次。

如果您需要強制執行註釋字段中描述的規則和條件,那麼聘用事件協調員實際上更具成本效益,而不是試圖使軟件中的所有內容自動化。面向細節的人類可以更快地適應異常情況,而不是通過調整代碼來處理異常情況。

+0

謝謝比爾,這是我最初的過程,但用戶堅持認爲計算時間反映了他們制定的規則。我想如果他們知道一個2小時的事件包括20分鐘的休息時間,這就足夠了,但是因爲他們總共獲得了一天中的總計時間,他們需要知道發生了多少休息時間。 我完全同意你的看法,並且努力保持它儘可能簡單,但是這樣不斷突然冒出來,需要一個解決方案。 – pedalpete 2010-05-07 17:19:14

+0

給他們一個估算你需要花費的時間和工資,以軟件實現這個系統,並向他們展示用戶界面的樣子。我敢打賭,他們會改變主意。 – 2010-05-07 17:22:30