我应该使用序列化来存储可用时间吗?

时间:2012-12-05 00:59:10

标签: php mysql

我有一个网站要求用户输入他们可以教授的日期和时间。例如,教授可以在周一下午1:00到下午2:00以及周二下午2:00到下午4:00进入。

目前,我使用serialize将数据存储在名为“availability”的列中的MySQL表中。我带周一+ 1300 + 1400和周二+ 1400 + 1500并序列化这两个。然后我使用explode()来提取星期一,1300,1400等。

我觉得应该有更好的方法来做到这一点。每次学生想要看到教师的可用性时,我都需要提取这些信息,我认为目前这种方法效率不高。

你能告诉我一个更好的解决方案吗?

1 个答案:

答案 0 :(得分:2)

您当前的解决方案将不允许您根据数据库本身的可用性进行搜索。您需要获取序列化数据,反序列化然后检查它,这将是非常昂贵的。

你应该做的是设置一个看起来像这样的表:

User_id | Day | Start_Time | End_Time

现在,如果具有user_id的用户在星期一下午2-3点和星期五下午4点到5点免费,则在此表中添加两个条目

1  |  Mon  |  1400  |  1500
1  |  Fri  |  1600  |  1700

您现在可以在数据库本身轻松搜索,过滤,排序等。