Mysql
營業地點開放時間數據庫
我正在為開放時間設計一個數據庫並創建了這個解決方案。
將成為 MySQL 的數據庫的規範是,一個位置在一周內有標準的開放時間,並且可以有特殊的開放時間,例如在聖誕節或類似的時候。
因此,如果我想要一個條目的開放時間,我會首先在給定日期的“special_opening”中搜尋,如果沒有返回結果,我會從“opening”載入數據。
這是實現數據庫的合法方式嗎?有更好的方法嗎?
您可以通過將所有開放時間保存在一個表格中來簡化您的設計並使其更強大,該表格包括用於解決衝突記錄的日期範圍和優先級程式碼。
它看起來像這樣:
create table OPENING ( id INT , entry_id INT , from_date DATE , to_date DATE , priority INT , weekday_id INT , start TIME , end TIME , pause_start TIME , pause_end TIME , editor_id INT , timestamp TIMESTAMP )
您的模型和這個模型之間需要注意的區別是:
- 您為每個適用的日期範圍保留一組記錄,而不僅僅是保留目前數據。
- 您可以保留營業時間的日期範圍歷史記錄。這還允許您選擇未來的日期範圍,這對於提前設置數據很方便。
- 您將正常時間和例外情況保存在一個表中,因此您不需要在檢索營業時間時使用條件邏輯。
- 例外也有一個日期範圍,如果適用的話,通常是一天的範圍。
- 所有記錄都有優先級。正常記錄的優先級較低,異常記錄的優先級較高。閱讀時只需按優先級降序選擇前 1 個順序。