在UI和数据库中表示时间段

时间:2011-06-15 21:48:47

标签: javascript sql ruby-on-rails

我最近采用了一个Employee模型的项目,需要将此人的可用时间作为属性。

现有表单使用168个复选框来表示一周中的每个小时,并将信息存储为数据库中的7个24位二进制字符串,每个位在当天的相应小时内充当布尔值true或false。

我真的想过渡到更优雅和易于管理的东西,但我无法提出任何符合现有实施灵活性的简单解决方案。

将时间段作为开始和结束时间存储可能与每天可能有多个时间输入一样乏味,并且可能会在特定时间查询可用性更复杂。

在用户界面和数据库结构中是否有处理此类信息的最佳做法?

3 个答案:

答案 0 :(得分:1)

你能不能制作时间段?

Employee
  Availability
    7AM -> 12PM
      Monday
      Tuesday
      Wednesday
    1PM -> 4PM
      Monday
      Tuesday
    1PM -> 5PM
      Wednesday

每个用户都有一个代表一天中一个或多个小时的时间块列表。每个时间块也可以代表一周中的一天或多天。根据用户可用性的复杂程度,可能只有非常少的数据或很多。

如果您不想要,UI不会真正改变,因为您可以找出检查了哪些复选框并构建了一个时间段块。如果两次之间存在一个或多个小时的间隔,那么它将成为另一个时间段。

添加Shift UI :: http://imm.io/6vGk

显示员工班次:: http://imm.io/6vGv

答案 1 :(得分:1)

我会以这种方式为数据库中的数据建模。

Employee/Day/Hour Relationship

员工与一周中每天的工作时间之间存在多对多的关系。

在UI方面,您可以使用日期和多选列表框的复选框来设置给定日期的小时数。

答案 2 :(得分:0)

我们将员工时间表和非可用时间存储在两个不同的表中。搜索正在构建可用时间,然后排除不可用。员工日程安排的数据结构非常复杂,因为每天存储时间表只会使我们的搜索非常慢并且表格很大。