2012-10-09 131 views
0

我想將位置的開放時間和關閉時間存儲到數據庫表中。您認爲以下哪種表格設計更爲理想?我使用的是MySQL或者也許是PostgreSQL(會很重要嗎?)。有關架構設計的建議

每天一個記錄? (返回1-7結果)

id, location_id, weekday, start_time, closing_time 

或者每個位置有一條記錄? (返回1個結果總是)

id, location_id, mon_start, mon_end, tue_start, tue_end, ... ... ... sun_start, sun_end 

最常見的查詢將簡單地顯示這樣的內容(總是整個周):

Location: blablabla 
Operating Hours: 
    Monday: 8 AM to 8 PM 
    ... ... 
    Sunday: 8 AM to 12 PM 

回答

3

第一個解決方案顯然是正確的。第二個不規範化,難以規劃,並且不可擴展(假期,特殊時段等)。

+0

作爲示例,使用此選項,您可以每天有兩個開放時間。 (例如:上午8點到10點,下午4點到6點)。嘗試在您的其他解決方案中實施 – podiluska

+0

「日期」字段實際上是從0-6(週一到週日)的週日。我已經編輯了這個問題來反映這一點。我實際上不知道你的意思是延長假期。 – dashmug

+0

在標準化的格式中,可以很容易地在系統中添加假日(或系統中的-1)或其他編碼值以處理非標準的開放日期。在需要更多工作的非規範化格式中。 –

0

絕對是第一個,它的標準化程度更高,您可以使用查找表格查看第二種格式的數據,並且可以輕鬆地生成數據。

作爲第一張海報,第一個解決方案可以很容易地擴展到包括節假日等等。第二個解決方案不那麼靈活。