sql – 在预订系统中查找空闲插槽
在 my question about searching for date ranges我尝试简化问题,无意中提出了一个不同的更简单的问题. 而不是通过编辑使该问题复杂化,我将问我实际想要的问题. 我有两个表属性和预订.预订具有属性的外键以及开始和结束日期. 用户正在搜索空闲插槽并以天为单位提供所需的持续时间.他们还提供他们感兴趣的一系列开始日期.因此,搜索将按以下方式搜索: 现在我可以这样做: 我认为(2)在大多数情况下更有效.有没有更好的算法?是否有纯SQL解决方案. 我将使用Django,我的数据集很小,所以我可能会对’哑’的approuch感到满意,但我很想知道最好的算法是什么样的. 解决方法对您的应用程序可能有点过分 – 但是:以“写入”过程变得更复杂为代价来改进搜索的一种相对简单的方法是更改??Booking表以使其成为“可用性”表. 添加一个布尔列以指示插槽是空闲还是已预订(或者更好地保留在预订它的客户的ID中,如果插槽空闲则使用0). 从2009年1月1日开始使用一个免费插槽 – > 12月31日? 当您预订时,将空闲时段分为3个(两个插入和一个更新),预订的插槽和两个可用插槽. 继续这样做,随着时间框架变得更加分散,预订流程将包括以下之一: >为某人分配一个完整的“可用插槽”(一次更新) 这并不是非常复杂的管理和搜索过程变成一个简单的查询:在所需的时间范围内找到任何可用的槽(预订= false或customerid = 0,无论你采用哪种方式)enddate – startdate> =你想要的天数. 它使预订/可用性表的大小翻倍,并使预订变得不那么简单,但权衡的是搜索过程就像它一样容易. (编辑:海南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |