2009-12-02 81 views
0

我想讓我的用戶指定他們想要聯繫哪些小時/天,我雖然創建了固定的時間表,並讓用戶指定他有空的時間。固定時間表數據庫設計

我在計算如何將該信息存儲在數據庫中時遇到了一些麻煩,任何人都可以幫助我爲這種情況設計好桌子嗎?

+0

你真的需要小時級別的分辨率是多少?不知道更多關於你確切的問題,我會試圖有一個「首選聯繫時間」字段與幾個簡單的選擇,如「早上」「下午」或「晚上」 – 2009-12-02 23:56:06

+0

@Ken:這也可能是一種選擇,我會考慮到這一點。感謝您的輸入。 =) – 2009-12-03 13:50:37

+0

@Ken:我剛剛意識到我需要提供日期級別的解決方案,用戶可能希望在早上除外,例如週末聯繫。 – 2009-12-03 13:51:49

回答

1
  • Day表中包含天(Sun,Mon,Tue ..)列表,您也可以使用枚舉字段。
  • Period表格包含可用(小時)時段的列表,或者您也可以使用一天中的部分時段。

contacttime_model_01

+1

冗餘正常化... – 2009-12-03 16:47:18

+1

感謝您的讚揚@Vainstah;如果您看到「冗餘標準化」,我會看到預先加載的查找表。如果需要在解決方案(請參閱下文)中解決「重疊」和重複條目「與應用程序邏輯」的問題,我會發現一個不應該存在的問題。 – 2009-12-03 17:44:52

+0

沒有什麼個人的,但我們的模型都捕獲相同的語義。您剛剛創建了一個over-the-top數據模型。爲了使這些表格有用,我需要查詢日期 - 聯繫人和期間。這是數據建模的學術觀點,而不是實際的觀點。您的溶劑也需要 - 相同的邏輯來防止重疊。 – 2009-12-08 12:45:48

1

我假定日期不涉及。如果涉及日期,則刪除日期並將時間類型更改爲日期時間類型。

所以,你需要的是這個樣子·

爲person_id條目 - 天(INT 0-7) - time_low - time_high。

這就是所有你需要表示的數據。可用性由time_low和time_high之間的範圍表示。

您將需要應用程序邏輯來合併重疊並解決重疊。它不應該太難。