酒店预订系统:用于查询的最佳SQL db结构
我要设计一个酒店预订系统 每个酒店都指定了一些房间类型酒店预订系统:用于查询的最佳SQL db结构,sql,design-patterns,database-design,software-design,Sql,Design Patterns,Database Design,Software Design,我要设计一个酒店预订系统 每个酒店都指定了一些房间类型 RoomType:id | name | hotel|u id 每家酒店为特定时期提供一定数量的房间类型(给定date\u from和date\u to)。 此外,每个客户都可以在指定的时间段(从到的date\u和date\u到)预订一定数量的某些房间类型 我需要能够找到并显示给定酒店的可用报价,了解每天每种房间类型的免费(提供-预订)房间数量,查询最低免费房间数量等 我想征求意见,我应该如何保存数据。什么是最佳解决方案?我知道有些查询(比
RoomType:id | name | hotel|u id
每家酒店为特定时期提供一定数量的房间类型(给定date\u from
和date\u to
)。
此外,每个客户都可以在指定的时间段(从到的date\u和date\u到
)预订一定数量的某些房间类型
我需要能够找到并显示给定酒店的可用报价,了解每天每种房间类型的免费(提供-预订)房间数量,查询最低免费房间数量等
我想征求意见,我应该如何保存数据。什么是最佳解决方案?我知道有些查询(比如,在给定范围内显示给定类型的每天空闲房间的数量)不能用简单的SQL查询实现,除非我使用存储过程。然而,我想让它尽可能快和容易实现
到目前为止,我考虑过:
保留房间优惠:酒店id |日期|从|日期|到|数量|房间类型| id
与预订相同
拥有RoomOffer:hotel|id | date | quantity | room|type(客房类型)id
和预订相同-即在创建RoomOffer/预订时,在给定范围内每天创建一条记录
有什么建议吗?我假设RoomType
指的是一个房间,而且每个房间的主键是元组(hotel\u id,room\u type\u id)
,因为您对RoomOffer
使用这两个字段
但是,我不建议您采用RoomOffer
和Reservation
方法。首先,因为您存储了大量冗余信息:当一个房间还没有预订时,您需要一个房间报价来说明它是可用的(或者更糟糕的是,很多是因为您将它除以时间范围),这是您已经知道的
与此相反,我建议采用更类似的设计:
从您的问题中,我知道您关心系统的性能,但通常在设计阶段进行此类优化不是一个好主意。这样做可能会导致大量冗余数据和耦合类。但是,您可以使用索引或甚至不使用SQL方法来提高DB查询的性能。在项目的后期阶段,您可以更好地评估这一点