-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