酒店管理的数据库设计案例,需求如下:
1.酒店客房分几种:单人套房、双人、四人等。
2.要登记房间预定时间和入住时间,精确到小时。
3.方便查询,和修改。能够方便的查询到每间房间的时间和人员信息。
4.审核机制,可多人同时预订同一间房(也就是先预订并读入数据库,通过审核确认再加入预定信息中)。
5.双人房可两人同是入住,四人类似。
流程:A01号房--信息:双人房--状态:1人入住(1月1号-1月10号),1人预定(1月2--1月8号)
客户--订A01---判断是否有人
客户a--订A01---判断是否有人--是否可以入住--定1月3-1月5日--提交预定信息
操作员--查看A01预定信息--审核通过客户a的预定--修改A01状态为:2人入住(1月1号-1月10号和1月3-1月5日)
双表解决方案:
房间表:
房间号 状态 种类 预定人数
其中:状态为:空闲,已住满,还有床位;
种类:单人房,双人房,……
房客表:
姓名 房间号 预定时间 通过否 入住时间 注销时间 费用
房 间表 t_room
state 标志房间的状态是空闲还是客满
t_orderlist
其他的次要信息就不说了.主要说一下关键的字段把
state
E 已经结帐,回填t_room的state 为空闲
A 收到预定,但尚未确认
C 已经确认,确认的同时回填房间表t_room的state为客满
X 在确认唯一有效订单的同时.修改该房号的其他订单状态为X.也就是说如果该房号存在一条C,则其他必为X
t_orderdetail
orderlist的儿子表
start_datetime
end_datetime
parent_id
state E结帐A入住
相同房号的几条记录,都是E则回填t_orderlist state = 'E'
三表解决方案:
1>基础表basetable
房号 状态 种类 预定人数
2>主表 maintable
入住编号 房号 预定时间 入住时间 退房时间 入住人数 当值服务员 备注 房价 折扣 赔偿 其他消费 押金 实收 创建时间 创建人 修改人及时间 结账人员,结帐时间
注:入住编号是自动生成的,规则为房号+2位月度流水号
创建时间,创建人,修改人及时间都是自动的,记录操作人员及时间;开房时值班前台与退房时值班前台很可能不是同一人,分开记录,做到内部可查
实收=房价*折扣+赔偿+其他消费-押金,其他消费主要记录长途电话费或其他非用品等等
3>从表 detailtable
入住编号 客户名 性别 出生年月 地址 身份证号码 身份证扫描件
注:一人与多人入住都可以登记其身份信息
多表解决方案:
RoomTypeMaster
ID Name
1 单人
2 双人
3 四人
RoomMaster
ID Name RoomType
1 A 1
2 B 1
3 C 2
4 D 3
RoomStatusMaster
ID Name
1 未订
2 未订满
3 订满
4 未入住
5 未住满
6 住满
RoomStatus
ID Room RoomStatus
1 1 3
2 2 1
3 3 1
RoomBook
ID Room Booker BookTime StartTime EndTime PersonQuantity Permission
1 1 甲 2005/10/10 10:25 2005/10/11 2005/10/20 2 1
RoomBookExecution
ID RoomBook ActualStartTime ActualEndTime Status
1 1 2005/10/11 2005/10/18 1
RoomBookExecutionStatusMaster
ID Name
1 入住
2 取消
3 退房
