-2
我試圖建立一個網站的表單部分,允許用戶指定他們是免費的一週中的哪個小時。 (例如:約翰史密斯週二免費4-7,星期三免費8-9)通過時間表中的空閒時間匹配人
然後,我想運行一些服務器端代碼,將具有相似時間塊的用戶配對在一起。
我在想如何設計我的數據庫來支持這個功能,以及什麼樣的算法可以讓我匹配類似的用戶?
我試圖建立一個網站的表單部分,允許用戶指定他們是免費的一週中的哪個小時。 (例如:約翰史密斯週二免費4-7,星期三免費8-9)通過時間表中的空閒時間匹配人
然後,我想運行一些服務器端代碼,將具有相似時間塊的用戶配對在一起。
我在想如何設計我的數據庫來支持這個功能,以及什麼樣的算法可以讓我匹配類似的用戶?
好吧,我會盡量讓你的數據庫結構。
我認爲最好的是將時間分成不同的時間段, 00:00 - 01:00,01:00 - 02:00,等你把它們放在一個表
ID | day | timestart | timeend
1 | Monday | 00:00 | 01:00
2 | Monday | 01:00 | 02:00
.....................
注意,所有列純粹是讓你知道你正在引用什麼,除了身份證件。
然後你有你的用戶表
ID | username | email | ...
1 | John | [email protected] | ...
.....................
然後你有另一張表,time_off或某物
user_ID | timeblock_ID
1 | 2
1 | 8
...............
你把兩個USER_ID和timeblock_ID一個外鍵引用到其他表
然後您可以通過以下方式查詢:
SELECT GROUP_CONCAT(timeblock_ID SEPARATOR ',') AS timeblocks FROM time_off WHERE user_ID=$id
,並使用結果來獲得與從相同時間每個用戶:
SELECT
users.ID, users.username
FROM time_off
LEFT JOIN users ON users.ID=time_off.user_ID
WHERE
time_off.timeblock_ID IN($timeblocks)
GROUP BY users.ID
並不難,是不是呢?實施取決於你。
我會爲你寫出整個代碼,併爲你提供整個數據庫結構,明天。 http://whathaveyoutried.com/ – AmazingDreams 2013-02-26 21:39:12
您需要更好地定義您的問題 - 取決於您嘗試解決的問題,這要麼相對簡單,要麼尋找NP難題的解決方案。 – 2013-02-26 21:40:20
@JonathanRich感謝你的微妙:) – AmazingDreams 2013-02-26 21:40:55