时间日历数据结构

我们正在更新(重写),我们的系统,存储有关,当人们可以在白天进行客房预订等方面的信息。 现在我们存储的开始和时间以及空间可用在一个表中的日期,并在另一个我们存储个人约会时间。

从表面上看这似乎是一个合乎逻辑的想法来存储信息的这种方式,但随着时间的推移和高负荷下的系统来了,我们开始认识到,这个数据结构似乎是低效的。 (它成为一个密集的操作来搜索所有房间的可用时间,计算当房。如果房间可用于给定的时间,是它提供足够长的时间来适应要求的时间的时间)。

我们在如何使系统更有效地圈走了各地,我们觉得必须有一个更好的方式来处理这一点。 有没有人有关于如何去了解这一点,或者有什么地方看如何建立这样的建议吗?

--------------解决方案-------------

我发现这本书是鼓舞人心,一个必须阅读任何类型的数据库,涉及时间管理/限制:

在开发时SQL面向数据库应用程序

由编辑 :书可在网上,通过理查德·斯诺德格拉斯的主页这是一本好书。)

@ Radu094指出你一个很好的信息来源 - 但是这将是艰难的去处理了。

在一个可怕的实际操作层面,你有没有考虑记录约会和可用信息在一个表中,而不是在两个表? 每一天,片时间成“永远可用”(在办公室打开之前,该办公室关闭之后 - 如果这样的事情发生),“可 - 可分配”和“不可用”。 这(两)三类预订将被记录在连续的时间间隔(开始和结束时间在一个单一的记录中的每个区间)。

对于每一个房间,每个日期,有必要建立一套“未使用”的预订(取决于你是否去'永远可用“,设定可能是一个人可以”记录也可能包括早班和晚班“永远可用”的记载太)。

然后,你必须制定出什么问题,你是问。 例如:

  • 我能预订客房X日日ŸT1和T2之间?
  • 是否有T1和T2之间可在天Ÿ任何房间?
  • 在什么时候在第一天Y是房X还有吗?
  • 在什么时候在第一天Y是一间带视听功能和容量,12人可用?
  • 谁曾房X日的Y在早上预订?

这是的可能性只有一小部分。 但随着一些关怀和对细节的关注,查询变得可控。 验证在DBMS的限制将变得更加困难。 也就是说,确保当时间[T1..T2)被黄牌警告,然后没有其他人的书[T1 + 00:01..T2-00:01)或任何其他重叠的时期。 见Allen的时间间隔代数在维基百科和其他地方(包括本在uci.edu)。

分类:数据结构 时间:2012-05-13 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.425 (s). 10 q(s)