酒店有若干房间,房间有若干类型。
给定房间数和一个时间区间(以天为单位),给定房间类型。查询数据库当前状态,如果满足订房条件则产生订单,否则返回false。如果返回false时能给出合理的订房建议则更佳。
我考虑的方案:
---------------------------------------------------------------
房间表:
room_id
room_type 房间类型
room_status 房间状态[是否空置]
room_order_id order表外键,被那个订单预定
room_order_start 时间区间左标
room_order_end 时间区间右标
...
订单表:
order_id
order_rooms 预定的房间总数
order_room_type 预定的房间类型
order_start 预定区间左标
order_end 预定区间右标
...
下订单的流程
从房间表找未预定的或者预定区间同用户选择区间不重叠的房间,如果符合条件的房间总数小于用户选择的房间数,返回false,否则返回true。
问题与疑惑
-----------------------------------------------------------------
这种设想没有整合房间资源,例如A、B房间均被预定且都在新订单选择的时间区内,都不符合查询条件。但是A、B
综合起来是满足时间区间的,A退房之后原来的B可以使用A房间。
个人感觉这个很类似内存管理的算法,用有限的房间类型和房间数来满足无限多的客人入住。本人才疏学浅,请各位
多指教。