Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.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
Php 预订应用程序(如酒店)的数据库设计_Php_Mysql - Fatal编程技术网

Php 预订应用程序(如酒店)的数据库设计

Php 预订应用程序(如酒店)的数据库设计,php,mysql,Php,Mysql,我造了一个,但我确信它是错的 我有一个表来记录客户的详细信息,还有一个表记录了每个入住日期(即一周的假期有七条记录) 有更好的办法吗 我用PHP和MySQL编写代码,这有什么不对?记录客户入住的每个日期,我认为这是相当标准的报告,比如能够显示任何一天预订的房间数量。 我在这页找到了它: 警告:目前(11月11日),谷歌报告该网站包含恶意软件:答案在很大程度上取决于你的要求。。。但我希望只需要存储一个记录,记录他们入住的开始和结束日期。如果您能进一步解释您的问题,我们可以为您提供更多详细信息。您

我造了一个,但我确信它是错的

我有一个表来记录客户的详细信息,还有一个表记录了每个入住日期(即一周的假期有七条记录)

有更好的办法吗


我用PHP和MySQL编写代码,这有什么不对?记录客户入住的每个日期,我认为这是相当标准的报告,比如能够显示任何一天预订的房间数量。

我在这页找到了它:


警告:目前(11月11日),谷歌报告该网站包含恶意软件:

答案在很大程度上取决于你的要求。。。但我希望只需要存储一个记录,记录他们入住的开始和结束日期。如果您能进一步解释您的问题,我们可以为您提供更多详细信息。

您需要问自己的一些问题:

  • 您是否有理由需要记录每一天的入住情况
  • 你能不能给我一张住宿的桌子,一个到达日期,几个晚上或者出发日期
  • 是否有与一位客户的住宿相关的特定数据每天都不同

    • 我认为每天一个元组有点过分了。“停留”表上的几列就足够了

      stay.check_in_time_scheduled
      stay.check_in_time_actual
      stay.check_out_time_scheduled
      stay.check_out_time_actual
      

      是否有必要为一个人停留的每一天创建一个记录?只有在每天都很重要的情况下才有必要,否则就需要有一张包含客户详细信息的客户/客人表,一张包含客人预订的预订表。预订表包括房间、开始日期、结束日期、客人等


      如果您需要记录其他事项,如付费活动或膳食,请根据需要将其添加到其他表格中。

      减少每次住宿的条目数的一种可能方法是,存储时间范围,例如开始日期和结束日期。我需要知道您针对数据运行的操作,以便提供更具体的建议

      一般来说,如果需要检查给定日期有多少客户,可以使用存储过程进行检查

      对于某些特定的操作,您的设计可能是好的。即使是这样,我仍然会保留一个“访问”表,将客户链接到一个独特的停留,以及一个“访问天数”表,在该表中,我会将每个客户的停留时间解析为其天数


      尽快。

      您正在用查询的简单性(可能还有性能)来权衡数据库的大小

      您当前的模型提供了简单的查询,因为它很容易查询客人数量、n晚X房间的空房等,但是数据库的大小将快速增加

      移动到start/stop或start/num nights模型将使某些。。。有时有趣的查询:)


      所以很多选择都和您的SQL技能水平有关:)

      有些事情可能会破坏您的模型。这些可能不是问题,但您应该与您的客户核实是否可能发生

      • 少于一天的住宿(例如,在一些商务酒店,中午的短暂住宿很常见)
      • 延迟退房/提前入住。如果你只是测量夜晚,而不是日期/时间,你可能会发现很难安排这些,或者看到潜在的冲突。我们的一位客户希望有四个小时的休息时间,不总是上午10点到下午2点

        • 我不喜欢图表中的模式。很难看

          模式摘要

          表格:访问

          访问表包含在酒店住宿的每晚一行

          注:访问包含

          • ixVisit
          • ixCusomer
          • dt
          • 鼻涕
          表格:客户

          • IX客户
          • sFirstName
          • sLastName
          表:停留

          入住表中有一行描述了整个就诊过程。每次访问都会更新

          • 伊克斯塔伊
          • 到达
          • D离开
          • 鼻涕
          注释

          web应用程序有两个方面:选择操作和CRUD操作。大多数web应用程序99%为SELECT,1%为CRUD。规范化倾向于对CRUD的帮助远大于对SELECT的帮助。您可能会看到我的模式并感到恐慌,但它很快。对于任何CRUD活动,您都必须做少量的额外工作,但是您的选择速度会快得多,因为您所有的选择都可以命中停留表

          我喜欢杰夫·阿特伍德(Jeff Atwood)的说法:“正常化直到受伤,非正常化直到起作用”


          对于一个忙碌的酒店经理来说,网站的工作效率与工作速度同样重要。

          我在旅游业工作,曾参与过许多不同的PM。我设计的最后一个方法是每晚按客人排队,这是我遇到的最好的方法。 在这个行业中,每晚入住都有一些特定的信息。例如,您需要知道预订时住宿每晚的费用。客人也可以在逗留期间搬家

          就性能而言,在MySQL中执行equals查找比执行范围查找更快,因此startdate/enddate方法会更慢。要查找一系列日期,请执行“where date in(dates)”

          我使用的模式大致如下:

          Bookings (id, main-guest-id, arrivaltime, departime,...)
          
          BookingGuests (id, guest-id)
          
          BookingGuestNights (date, room, rate)
          

          哇,谢谢你的回答

          我花了很长时间仔细考虑了这个模式,在尝试了另一种方法并在转换为html时遇到困难之后,我选择了record=night方法

          我使用CodeIgniter和内置的Calendar类来显示预订信息。通过这种方式(至少在尝试之后)检查是否有约会更容易,所以我选择了它。但我确信这不是最好的方法,这就是我为什么问这个问题的原因

          也谢谢你的DB答案链接

          最好的


          虽然我最初的反应也是这是作业,但我觉得这有点不公平。这是一个关于特定类型数据的相当普遍的问题