确定日历可用性,搜索算法和数据库结构

时间:2011-12-12 02:36:07

标签: database algorithm

需要设计可用性应用程序。

用户会在日历上标记所有活动,就像常规日历一样。然后我需要搜索类似“从下周四下午到周六早上需要某人”的内容。所以我正在寻找的是用户放入的内容的负面影响 - 用户在不可用时插入时间段,并且当它们出现时我会搜索插槽。

我能想到的最简单的事情就是在这两个表中放下日历信息,

用户(身份证,姓名等) 事件(id,user_id_foreign_key,time_start,time_end,type)

事件中的“类型”可能会用于“每日”,“每周”等等无限重复事件。还没有真正弄清楚如何处理这些......

所以我真正需要做的就是为每个用户搜索他们的事件的开始/结束时间是否落在我给出的时间范围内(即事件的开始时间早于范围的结束时间或事件的结束时间晚于范围的开始时间。如果他们这样做,则用户不可用。我当然必须遍历所有用户才能执行此操作。

这听起来像是最有效的方法吗?我自己想出来,所以想得到一些反馈。谢谢!

1 个答案:

答案 0 :(得分:1)

不,如果系统中的用户和事件数量增加,这听起来不是最有效的方式。

例如,如果您要在数据库中存储FREE时间间隔,您将能够找到具有单个数据库查询的所有可用用户(查找包含您搜索的间隔的所有空闲间隔,并加入此与用户数据表)。应使用间隔的开始和结束时间索引自由间隔数据表。

维护空闲间隔有点复杂,因为当您添加事件时,通常会分割一个空闲间隔。但是对于搜索来说,这将是一个更好的数据结构。