Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何根据入住天数或月数管理客房可用性_Mysql_Database Design_Activerecord_Ruby On Rails 3.1 - Fatal编程技术网

Mysql 如何根据入住天数或月数管理客房可用性

Mysql 如何根据入住天数或月数管理客房可用性,mysql,database-design,activerecord,ruby-on-rails-3.1,Mysql,Database Design,Activerecord,Ruby On Rails 3.1,我正在开发一个Rails 3应用程序(使用MySQL作为RDMS)来管理一些房间的可用性/入住率(这是一个类似酒店的应用程序) 就我而言,问题是我必须满足system 2的不同要求,因为一个房间可以出租: 几个月(例如6个月) 某些天/周/周末 显然,应用程序必须在给定的日期内显示每个房间,是否可用,以及哪个用户正在租用;另一方面,一个用户可以在一个房间中搜索给定的日期范围。 日期范围可以是某个固定日期或某个月范围(例如从9月到3月),我知道这与数据库设计无关,但我必须记住 为了让这个系统高效地

我正在开发一个Rails 3应用程序(使用MySQL作为RDMS)来管理一些房间的可用性/入住率(这是一个类似酒店的应用程序) 就我而言,问题是我必须满足system 2的不同要求,因为一个房间可以出租:

  • 几个月(例如6个月)
  • 某些天/周/周末
  • 显然,应用程序必须在给定的日期内显示每个房间,是否可用,以及哪个用户正在租用;另一方面,一个用户可以在一个房间中搜索给定的日期范围。 日期范围可以是某个固定日期或某个月范围(例如从9月到3月),我知道这与数据库设计无关,但我必须记住

    为了让这个系统高效地工作,我想通过引用房间和一个包含365个元素的数组(表示1年)来创建一个表年组合,其中每个元素可以是0或1,0表示可用,1表示租用

    采用这种解决方案,我将不得不面对一些问题:

  • 当用户在几个月内搜索房间时,可以快速返回结果
  • 管理“跨年度”范围(例如,从2012年12月20日到2013年1月13日)
  • 闰年
  • 最后,我要避免SQL过程或午夜进程(如果可能的话)

    我相信有更好的方法可以在SQL中设计这个问题。。。
    你们中的一些人能帮我吗?或者给我一些提示?

    保留一份有开始日期和结束日期的房间预订清单。不要试图为可用时间段建模,也不要把您的预订数据库想象成一个电子表格。这只会让你陷入毫无意义的复杂性。日期范围很容易使用

    最重要的是要知道如何在查询中检测重叠的日期范围。这是测试房间是否已预订或是否免费的基础。假设您有一个预订表,并且希望查找与给定日期范围重叠的预订:@FromDate和@ToDate。查找重叠预订的WHERE子句如下所示:

    WHERE RESERVATION.start_date < @ToDate 
      AND RESERVATION.end_date > @FromDate
    
    WHERE RESERVATION.start\u date<@ToDate
    和预订。结束日期>@FromDate
    

    可用房间不会有冲突(即不在…)且不可用房间会有冲突

    一开始我也这么想,但由于几个月的租房问题,我不确定。我忽略了一点(为了简化问题),那就是该应用程序在一年中向学生出租房间,在夏天向游客出租房间;因此,学生可计算的时间单位是一个月,因此学生不能在15天内租用房间。但是读了你的答案,我意识到最后的问题是数据层的开始日期和结束日期。我只需要提出一些逻辑,禁止学生租用少于一个月的房间。感谢乔尔为我指明了正确的方向;)@杜克博士-不客气!如果答案有帮助,请随意投票!当然是有帮助的!我试图提高投票率,但我需要更多的声誉:/