2011-09-18 73 views
0

我有一个资源,其中有一个可用性字段,列出一天中可供使用的小时数?mysql - 存储一系列值

例如。 res1每天0-8,19-23小时之间可用,此处的范围可以是小时范围的逗号分隔值。例如0-23,24小时访问,0-5,19-23或0-5,12-15,19-23

什么是最好的方式来存储这一个? char是个不错的选择?当资源被访问时,我的php需要用这里定义的小时来检查当前小时,然后决定是否允许这个访问。我可以让mysql告诉我当前小时是否在这里指定的范围内?

回答

0

我会存储在单独的表,其中的每一行我会(给你的例子)项的可用性:

ID,startHour,endHour,RESOURCEID

而且我只用整数的开始和结束时间。然后,您可以使用HOUR(NOW())或您有什么来针对连接执行查询,以查看某天某个小时的可用性。

(在另一方面,我会一直像首选MongoDB的非关系型数据库对这种数据的)

0

1)创建资源可用性,规范化的表。

CREATE TABLE res_avail 
{ 
    ra_resource_id int, 
    ra_start TIME, 
    ra_end TIME 

    # add appropriate keys for optimization here 
) 

2)与填充($ RESOURCE_ID, '$ START_TIME', '$ END_TIME')在您的列表中的每个范围(使用爆炸())

3)然后,你就可以查询:(例如,PHP)

sql = "SELECT ra_resource_id FROM res_avail where ('$time' BETWEEN ra_start AND ra_end)"; 

....