2012-09-26 50 views
2

我需要爲我的工作中的各個位置創建一個調度程序。我需要爲每個特定的地點安排從上午8點到下午5點的十五分鐘時間段。我正試圖圍繞所需的數據庫設計進行研究。調度數據庫設計

的一些參數:

  1. 時間表需要去至少兩週了。
  2. 與其他地點相比,每個地點都有獨特的時間表。
  3. 時間表必須在15分鐘的時間內完成。
  4. 每個位置將有不同的標準,當一個塊已滿時。例如,一個地點可以每15分鐘服務3個客戶,因此他們的地塊將成爲三個地塊。另一個地點可以每15分鐘服務5個客戶,因此在5個人預定後,他們的地塊將會滿員。

每當我畫出這個我違反了數據庫規範化的一些規則。主要目標是能夠查詢打開「插槽」的特定位置並顯示它們。任何人都知道我應該如何構建我的表格,這樣我剛剛描述的查詢將不必比必要更努力地工作?

回答

6

您需要爲每個位置設置一個設置表,其中包含諸如每15分鐘可以預訂多少客戶,打開和關閉時間等信息。你基本上會爲每個'時段'創建一個具有開始和結束時間的條目表。

其餘的參數必須在應用程序層處理,例如計算其他位置的事件數量並查看它們是否已滿。我想建議您閱讀Mozilla Calendar SQL Schema。它爲形成可靠的日程安排提供了良好的基礎。

0

聽起來你至少需要三張桌子。我的建議:

SCHEDULES - 存儲實際的時間表。將需要一個id(IE:AUTO_INCREMENT),location_id(參照 「位置」 表),time_starttime_end

地點 - 要保存的位置。將需要一個id(IE:auto_increment)和其他適用信息,如實際location

規則 - 這將引用LOCATION表。您將需要拿出您想要存儲的必需信息(IE:max_occupants)。這將至少需要一個id字段和location_id字段。

現在你有三個表來存儲所需的數據,LOCATIONS被其他兩個參考。您可以隨時在LOCATIONS表中添加「規則」,但如果您決定存在其他限制條件,則可以將其自己的表格添加到未來的靈活性中。