在SQL中检查房间可用性

时间:2015-01-28 20:56:21

标签: sql asp.net sql-server vb.net

我为酒店预订系统创建的关系数据库架构有4个表:

客户表 -

CustomerID (PK) 
title
firstname
surname
address 
town
county 
country 
postcode 
tel
email 
username
password

房间表

RoomID (PK)
RoomType
Description
PricePerNight

预订

ReservationID (PK)
CustomerID (FK)
RoomID (FK)
ArrivalDate
DepartureDate

Room_Availability

RoomID(PK/FK)
Availability

在前端,我有两个ajax日历,允许用户选择到达和出发日期,旁边有一个检查可用性按钮。

我不确定如何搜索数据库以检查哪些房间可用,然后在下一页上以gridview或其他方式显示它们。

另外,我的数据库架构是否正确,有人可以协助我吗?

1 个答案:

答案 0 :(得分:0)

正如gitsitgo所说,你的问题太宽泛而无法完全回答。但是,让我们稍微削减它。首先,我假设一个房间因两个原因而无法使用:一个是它正在被修复或者其他东西,两个是它已经被保留了。如果是这样,您的架构看起来没问题。

因此,要检查可用性,您需要获取用户提供的开始日期和结束日期,并找到所有可用的房间,并且不保留用户提供的两个日期之间的任何一天。

执行此操作的逻辑是选择不符合以下任何条件的所有房间ID:

  1. 开始日期介于预订开始日期和预订结束日期之间。
  2. 结束日期介于预订开始日期和预订结束日期之间。
  3. 开始日期小于预约开始日期,结束日期大于预约结束日期。
  4. 会议室ID在可用性表中标记为不可用。
  5. 要完成此操作,请查找并应用EXISTS或IN。 (你也想要查看BETWEEN。)忘记在网格中显示它,直到你弄明白要显示什么。