数据库设计:工作日和小时可用性

时间:2014-04-18 16:30:25

标签: mysql database

我试图在工作日的某个特定小时内根据群组的可用性创建一个调度系统。一个小组有可能在一周中的任何一天随时可用。例如,A组可于周一凌晨2点到8点,下午1点到晚上11点,周二在...

这些时间非常重要,因为有超过400个组,管理员需要根据活动的可用性安排活动。我已经集思广益了3种不同的选择,并阅读了许多类似的情况,但没有一个真正相关。

所有这三个选项都应该在理论上有效,但您会建议:

选项#1

Group Table
  -ID
  -Name
  -Availability (store as array) ["M0", "M1", "Su10"] where M represents Monday and 0 represents 12AM

选项#2     组表       -ID

Group Availability Table
  -ID
  -GroupID
  -Monday (store as array) ["0", "1", "2"] where 0 represents 12AM, 1 - 1AM, etc.
  ...all 7 days of the week

选项#3      组表        -ID

 Group Availability Table
   -GroupID
   -M0 (boolean)
   -M1 (boolean)
   ...all 168 possible weekday-hour combos

当管理员每天多次查询这些数据时,我不认为选项#1是可行的,而选项#3是一个巨大的表,尽管它不仅仅是布尔数的数据量很大。谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

我认为你需要考虑一个时隙表。然后,您将拥有一个连接表,以将组与此表相关联

timeslots
------------
timeslot_id
weekday
hour

groups_to_timeslots
–------------
group_id
timeslot_id

时间表将包含7 x 24个条目以及您可能的时间段。您的groups_to_timeslots表提供了多组到时间段的映射。