我最近采用了Employee
模型的项目,该模型需要将该人的可用小时数作为属性。在UI和数据库中表示时间段
现有表单使用168个复选框来表示每周的每个小时,并将信息作为7个24位二进制字符串存储在数据库中,每个位在当天的相应小时内充当布尔值true或false。
我真的想过渡到的东西多一点优雅和管理的,但我一直没能拿出符合现有实现的灵活性,任何简单的解决方案。
存储时间段的开始和结束时间可以是一样乏味的输入时可以每天多次,并很可能使在特定的时间更复杂查询的可用性。
在用户界面和数据库结构中处理这种类型的信息是否有最佳做法?
PostgreSQL原生支持时间间隔作为数据类型。 – Pointy 2011-06-15 22:06:53
这绝对是很好的知道,但我不知道它真的解决了这个问题。如果我没有弄错,那么这些时间间隔不会与特定的开始时间或结束时间相关联,因此它们必须用作更复杂的数据结构的一部分来表示所有必需的信息。我想我真正想要的是一种干净,易于管理的方式来输入,存储和查询168个布尔值。或者更好的方式来表示每周的每个小时。 – Luke 2011-06-15 22:15:34
那么你可以将一个间隔字段与一个日期字段配对,这样日期字段会给出开始时间和间隔的持续时间。不知道这是否会比两个日期字段更好或更差;它取决于你想运行的语义和查询。 – Pointy 2011-06-15 22:54:04