我已经建了一个,但我确信这是错的。
我有一张关于客户详细信息的表格,另一张表格中列有每个日期(即一周的假期将有7条记录)。
有更好的方法吗?
我使用MySQL编写PHP代码
答案 0 :(得分:6)
我在这个页面找到了它: A list of free database models
警告:目前(11月11日),Google报告该网站包含恶意软件:http://safebrowsing.clients.google.com/safebrowsing/diagnostic?client=Firefox&hl=en-US&site=http://www.databaseanswers.org/data_models/hotels/hotel_reservations_popkin.htm
答案 1 :(得分:3)
我在旅游行业工作,并参与了许多不同的PMS。我设计的最后一个有每位客人每晚行的方法,这是我遇到的最好的方法。 在这个行业中,每天晚上都有特定的信息。例如,您需要知道预订时每晚住宿的房价。客人也可以在逗留期间移动房间。
性能方面,在MySQL中执行等于查找比使用范围更快,因此startdate / enddate方法会更慢。要查找一系列日期,请执行“日期(日期)”。
我使用的架构大致是:
Bookings (id, main-guest-id, arrivaltime, departime,...)
BookingGuests (id, guest-id)
BookingGuestNights (date, room, rate)
答案 2 :(得分:1)
您需要问自己一些问题:
答案 3 :(得分:1)
可能会破坏您模型的一些事情。这些可能不是问题,但您应该咨询您的客户,看看它们是否可能发生。
答案 4 :(得分:1)
我对模式进行了长时间的考虑,并且在尝试了另一种方式并且难以转换为html之后采用了record = night方法。
我使用内置日历类的CodeIgniter来显示预订信息。检查日期是否可用这种方式更容易(至少在尝试之后),所以我选择了它。但我确信这不是最好的方式,这就是我提出这个问题的原因。
感谢DB回答链接。
最佳,
美
答案 5 :(得分:0)
这有什么问题?记录客户留下的每个日期允许我想象的是相当标准的报告,例如能够在任何一天显示预订房间的数量。
答案 6 :(得分:0)
答案在很大程度上取决于您的要求......但我希望只需存储一份记录,其中包含他们逗留的开始和结束日期。如果您更多地解释您的问题,我们可以为您提供更多详细信息。
答案 7 :(得分:0)
我认为每天元组有点矫枉过正。 “停留”表上的几列应该足够了。
stay.check_in_time_scheduled
stay.check_in_time_actual
stay.check_out_time_scheduled
stay.check_out_time_actual
答案 8 :(得分:0)
创建一个人每天都需要的记录吗?只有在每一天都很重要时才应该是必要的,否则有一个客户/访客表来包含客户的详细信息,一个预订表来包含客人的预订。预订表将包含房间,开始日期,结束日期,客人(或客人)等。
如果您需要记录其他内容,例如付费活动或用餐,请根据需要在其他表格中添加。
答案 9 :(得分:0)
减少每次逗留的条目数量的一种可能方法是,存储时间范围,例如:开始日期和结束日期。我需要知道您针对数据运行的操作,以提供更具体的建议。
一般来说,如果您需要检查在给定日期停留的客户数量,您可以使用存储过程执行此操作。
对于某些特定操作,您的设计可能会很好。即使是这种情况,我仍然会有一个“访问”表格,将客户与独特的住宿相关联,以及“访问天数”表格,我会将每个客户的住宿时间解析为当天。
阿萨夫。
答案 10 :(得分:0)
您使用查询简单性(可能还有性能)来折衷数据库大小
您当前的模型提供了简单的查询,因为它很容易查询客人数量,夜间房间X中的空位等等,但数据库大小会相当快地增加。
移动到开始/停止或开始/数字夜晚模型有时会产生一些有趣的查询:)
所以很多选择都与你的SQL技能水平有关:)
答案 11 :(得分:0)
我不关心图中的架构。这很难看。
架构摘要
表:访问
访问表包含每晚住在酒店的一行。
注意:访问包含
表:客户
表:保持
Stay表包含一行描述整个访问的行。它每次访问时都会更新。
备注强>
Web应用程序有两个方面:SELECT操作和CRUD操作。大多数网络应用程序是99%SELECT和1%CRUD。规范化往往比SELECT更有助于CRUD。你可能会看我的架构和恐慌,但它很快。你将不得不为任何CRUD活动做一些额外的工作,但你的SELECTS会快得多,因为所有的SELECTS都可以点击Stay表。
我喜欢Jeff Atwood的说法:“正常化直到它受到伤害,反正常化直到它起作用”
对于一个忙碌的酒店经理使用的网站来说,它的运作方式与其运作速度一样重要。