我有一个管理资源(代理)的程序。在该计划中,有一项功能可以从日历中选择日期(例如:08/11/2013,上午5点),并在选定的时间取回可用资源的数量。如何在关系数据库中有效地存储一年中全天每小时的资源状态?
资源状态只是一个字符串:“可访问”或“忙碌”。
你对此有什么想法或策略吗?
感谢您的帮助!
答案 0 :(得分:0)
存储生效日期(/时间)范围的最佳方式是日期(/时间)范围。换句话说,存储具有生效日期/时间和到期日期的记录。
不要试图将时间分成几个包含每个记录的块。这是不灵活的,会极大地增加您的数据维护负担。
因此,对于您的情况,您想知道代理何时可用,请使用类似这样的记录结构:
请注意,您不需要状态(“可访问”与“忙”),因为代理必须位于表中才能访问。据推测,如果某个代理人在某个特定时间点没有任何记录,那么他们就无法访问。
如果您想知道哪些代理商可在08/11/2013 05:00获得,那么只需使用包含以下内容的WHERE子句进行查询:WHERE Effective_Datetime <= '2013-08-11 05:00' and Expiry_Datetime >= '2013-08-11 05:00'