首先,我將這個問題標記爲語言不可知,但我使用的是PHP和MySQL。它不應該很大程度上影響問題本身。如何處理經常性時間?
我正在創建一個應用程序,顯示整個星期內某些節目的時間。每個單獨的節目都是經常性的(以每週爲單位),並且可能有2天播放的節目 - 例如。週日23:30開始,週一00:30結束。我正在存儲節目的開始(星期幾 - 星期一,星期二...... - 從不確切日期;時間)和持續時間。從來沒有表明會花費超過24小時。
我的問題是驗證如果新添加的節目不重疊一些舊的。特別是如果涉及週日到週一的節目。
在數據庫端和服務器端通常如何處理這種循環事件?
TL;博士版本的東西,我認爲
我的第一個想法是創建一些自定義的驗證算法,但它似乎過於繁瑣和複雜。並不是說我會對複雜的手工解決方案抱怨,但是如果沒有更多基本的東西丟失,我很感興趣。
想到的另一個選擇是將表格結構更改爲使用datetime(而不是「星期幾」和「時間」),並使用假的固定日期範圍來存儲數據。例如,所有星期一將設定爲1970年1月5日,星期日將用於1970年1月11日。此規則將有一個例外 - 如果某些節目在星期日開始並在星期一結束,則將存儲爲1月12日這個解決方案將允許數據庫比原來更靈活地查詢數據庫,並且還可以簡化針對每個星期之間重疊的節目的查詢(因爲我們可以直接在查詢中進行比較)。這個解決方案也有一些缺點(例如,使用假日期可能會讓人困惑)。
這兩個解決方案對我來說都是錯誤的算法的味道,並希望聽到更多有經驗的開發人員的意見。
因此,在給定時間只能有一個節目,並且您正試圖驗證是否添加了新節目,是否與任何現有節目沒有交集? – Lester
是的,確切地說。 –