你可以只具有開通的每一天,每一個數據庫中存儲:
-----------------------------------------
| StoreId | Day | HourOpen | HourClose |
=========================================
| 1 | 1 | 8:30 | 21:15 |
-----------------------------------------
| 1 | 2 | 9:00 | 17:00 |
-----------------------------------------
| 2 | 1 | 10:00 | 12:30 |
-----------------------------------------
| 2 | 1 | 14:00 | 19:00 |
=========================================
在該表中,當日表示一週的一天(1日,2日爲例)和那麼你只需要爲每個商店的開放時間參數化一次。
然後,您可以查詢該表,看是否有店爲您開放,在非常時刻的一週中的一天。
如果藥店有exceptionnal關閉或開通小時一天,我建議像這樣的
----------------------------------------------------------
| StoreId | Date | isOpen | HourOpen | HourClose |
==========================================================
| 1 | 2015-12-20 | true | 10:00 | 16:00 |
----------------------------------------------------------
| 2 | 2015-12-20 | false | null | null |
==========================================================
這樣一個ovveride表,你可以先檢查是否有藥房在這個表中的任何記錄當天(不依賴於時間),如果是這樣,你檢查是否有開放。如果覆蓋表中沒有任何條目,則檢查第一個表。
您也可以用ahve開閉時間,一天表,並創建商店,幾小時或幾天之間關係的關聯表一個小時的模型表。
謝謝!順便說一句,「日」欄不能是一週中的某一天,但它必須是一年中的一天(因爲開放時間可能每週都有所不同)。 另一個問題:時間範圍也可能是同一天的三個時間範圍(例如:從00:00到6:00,從8:00到12:30,從15:00到20:00)。 如何過濾已開放的藥店? 非常感謝你! –
我不認爲每天寫入記錄是一種很好的做法。你可以做的是有另一個表,覆蓋標準的一個與exceptionnal小時 – jiboulex
我把一個藥店,其接近我的表中12:30和14:00只是在那裏之間,你只需要檢查的爲例,如果有一個在這個星期的這一天在這個藥店的表中輸入,並且startTime比現在更低,endTime比現在更高 – jiboulex