2011-02-23 81 views
0

我們正在創建人們搜索和預訂座位的巴士服務的網絡應用程序。我們想給他/她可以指定經常性旅行的管理員提供用戶界面。數據庫設計:爲循環事件創建數據庫和用戶界面

例如沃爾沃客車每天早上9點從星期一開往城市2,星期二除外。可以有任何數量的這樣的標準。

我應該如何存儲這樣不同的重複旅行,可以搜索沒有perfomance命中?它應該如何在UI中表現出來,這對管理員來說很容易處理。

當前數據庫的設計:

Table : TRIP_MASTER 
TRIP_ID 
NAME 

Table : TIMETABLE 
ID 
TRIP_ID 
CITY_ID 
ARRIVAL_TIME 
DEPARTURE_TIME 
SEQ_NO 
+0

我想「每天早上9:00接受星期二」=>「每天上午9:00 *除*星期二」? – 2011-02-23 11:29:43

+0

假設我從City1到City2的一次經常性旅行發生在週二 - 例如,當前有* no *公交計劃在這兩個城市之間運行的那一天。我應該被允許指定那種經常旅行嗎? – 2011-02-23 12:06:06

回答

2

你的選擇是:a)存儲表示重複行的每次出現(因爲你可能會填充一個日曆表,表示一年中的每一天一排的實體),一利用SQL的方法或b)存儲表示重複計劃的規則,這將在整個應用程序中需要更多的程序代碼。我贊成選項a),即使它需要例程來定期填充trip事件表。

+0

我會選擇a)。我認爲我們需要像谷歌日曆定期事件對話框那樣提供用戶界面,並將所有規則存儲在數據庫中的某個地方。用戶保存規則時,請在TIMETABLE中相應地創建計劃。如果用戶更改規則,請首先從TIMETABLE中刪除所有記錄,然後根據最新規則重新創建。 – 2011-02-23 12:10:43

+0

UI與數據庫結構無關。數據庫結構與UI相關。您必須爲用戶提供創建/定義路線的能力(例如,公交站的許多地方以及每個站的時間),但您如何在數據庫中表示路線是UI不需要知道的事情關於。 – Tim 2011-02-23 14:00:20

+0

新的評論,因爲5分鐘過去了,我不能編輯另一個。我建議在給定的時間段內,例如一年中,您會爲路線中的每個停靠點創建一個記錄,例如每天在該地點停靠巴士,以及在每天的每個時間段內,例如,巴士每小時停在那裏。想象一下,考古學家研究該路線停留時間表,然後從原始數據中推導出這個規則:Aha!這條路線從未在星期二運行。您可以從構成它的位置時間行實例化路線定義,並且路線停靠點的順序在時間中隱含。 – Tim 2011-02-23 14:06:04