我有一个管理资源(代理)的程序。在该程序中,有一个功能可以从日历中选择一个日期(例如:08/11/2013 早上 5 点)并在选定的时间返回可用资源的数量。如何在关系数据库中有效地存储一年中每一小时的资源状态?
资源状态只是一个字符串:“可访问”或“忙碌”。
您对此有什么想法或策略吗?
感谢帮助!
我有一个管理资源(代理)的程序。在该程序中,有一个功能可以从日历中选择一个日期(例如:08/11/2013 早上 5 点)并在选定的时间返回可用资源的数量。如何在关系数据库中有效地存储一年中每一小时的资源状态?
资源状态只是一个字符串:“可访问”或“忙碌”。
您对此有什么想法或策略吗?
感谢帮助!
存储有效日期(/时间)范围的最佳方式是日期(/时间)范围。换句话说,存储具有有效日期/时间和到期日期时间的记录。
不要试图将时间分成块,每个块都有记录。这是不灵活的,并且非常严重地增加了您的数据维护负载。
因此,对于您的情况,您想知道代理何时可用,具有如下记录结构:
请注意,您不需要状态(“可访问”与“忙碌”),因为代理必须在表中才能访问。假定如果没有在特定时间点有效的代理记录,则它们一定是不可访问的。
如果您想知道 2013 年 8 月 11 日 05:00 有哪些代理可用,那么只需使用 WHERE 子句进行查询,其中包括:WHERE Effective_Datetime <= '2013-08-11 05:00' and Expiry_Datetime >= '2013-08-11 05:00'