我即将设计酒店预订系统。
每家酒店都分配了一些RoomTypes。
RoomType: id | name | hotel_id
每个酒店都会在特定时段内提供一定数量的RoomType(给定date_from
和date_to
)。
此外,每个客户都可以在指定的时间段(date_from
和date_to
)内预订一些RoomType类型的数量。
我需要能够找到&显示可用给定酒店的优惠,了解每个RoomType每天的免费(提供预订)房间数量,查询最少数量的免费房间等。
我想征求意见,我应该如何保存数据。什么解决方案最佳?我知道除非我使用存储过程,否则无法使用简单的SQL查询实现某些查询(例如,在给定范围内显示每天给定类型的免费房间的数量)。但是,我希望尽可能快速,轻松地实现它。
到目前为止,我已经考虑过了:保留RoomOffer: hotel_id | date_from | date_to | quantity | room_type_id
和预订
有RoomOffer: hotel_id | date | quantity | room_type_id
和预约相同 - 即在创建RoomOffer / Reservation时,为给定范围内的每一天创建单个记录。
任何建议?
答案 0 :(得分:1)
我认为RoomType
指的是单个会议室,并且每个会议室的主键都是元组(hotel_id, room_type_id)
,因为您使用RoomOffer
这两个字段。
但是,我不建议您采用RoomOffer
和Reservation
方法。首先,因为你存储了大量的冗余信息:当一个房间没有被预订时,你需要一个房间报价来说它是可用的(或者更糟糕的是,因为你按时间范围划分它们所以很多),你已经知道的东西。
而不是那样,我建议设计更类似于这个:
从您的问题我知道您关注系统的性能,但通常在设计阶段进行这种优化并不是一个好主意。这样做可能会导致您进入大量冗余数据和耦合类。但是,您可以使用索引或甚至使用无SQL方法来提高数据库查询的性能。这是您可以在项目的后期阶段更好地评估的内容。