资源描述
客房管理数据库设计与实现
———————————————————————————————— 作者:
———————————————————————————————— 日期:
3
个人收集整理 勿做商业用途
课程设计(论文)
课程名称: 数据库系统分析与设计
题 目:客房管理数据库设计与实现
院 (系):
专业班级:
姓 名:
学 号:
指导教师:
2012年 12 月 24 日
西安建筑科技大学课程设计(论文)任务书
专业班级: 学生姓名: 指导教师(签名):
一、课程设计(论文)题目
客房管理系统数据库设计与实现
二、本次课程设计(论文)应达到的目的
数据库系统分析与设计课程设计是信息管理与信息系统专业集中实践性环节之一,是学习完《数据库数据库系统原理及技术》及《数据库系统分析与设计》课程后进行的一次全面的综合练习.其目的在与加深对数据库基础理论和基本知识的理解,掌握借助PowerDesigner开发和设计一个小型数据库系统时设计数据库系统模型的基本方法,提高运用数据库解决实际问题的能力。
三、本次课程设计(论文)任务的主要内容和要求(包括原始数据、技术参数、设计要求等)
要求学生能独立完成一个数据库模型的设计与实现,包括:
1) 数据库系统需求分析;
2) 数据库概念模型设计;
3) 数据库逻辑模型设计;
4) 数据库物理模型的实现;
5) 完成不少于6000字的课程设计报告撰写.
四、应收集的资料及主要参考文献:
[1] 王珊, 萨师煊. 数据库系统概论(第4版). 北京:高教出版社,2006年5月.
[2] 赵韶平等。PowerDesigner系统分析与建模(第2版). 北京:清华大学出版社,2010.
[3] Data Modeling and Relational Database Design. Oracle Inc. 2001.
五、审核批准意见
教研室主任(签字)
摘要
随着社会的发展,人们生活水平不断提高,旅游经济不停发展,这一切都带动了酒店业的发展.现在不仅有旅游业的发展,还有各种跨地域的商务活动。随着人员流动的规模不断扩大,宾馆酒店的数量不断增加,关于客房的信息量也在不断增长,导致传统的客房管理系统已不能满足现在管理客房的及时、准确、全方位的需要。为了提高工作效率,促进经济的增长,需要借助计算机进行现代化的数据管理.
此次数据库设计利用powerdesigner这个建模工具,经过系统需求分析,了解确定该系统的功能结构、业务流程和内部数据流程问题,建立系统数据库的概念模型,并且转换为逻辑模型和物理模型,最终实现物理模型与数据库的连接,建立满足用户需求的数据库,为整个管理信息系统的后续建设和维护打好基础
关键字:需求分析,概念模型,逻辑模型,物理模型,数据库
目 录
1 绪论 1
1。1系统简介 2
1。2设计目的 2
1。3设计内容 3
2 需求分析 3
2.1 。需求分析的任务 3
2.2 系统数据流程分析 4
2.3 数据字典 5
3 概念模型设计 8
3.1 概念模型设计的方法和步骤 8
3.2 系统概念模型 10
4 逻辑模型设计 11
4.1 逻辑模型设计的方法 11
4。2 逻辑模型实现 13
4.3 数据完整性约束定义 13
5 物理数据库模型设计与实现 14
5.1 物理数据库模型的图示 14
5.2 物理数据库模型的详细表示 15
5.3 物理数据库模型的实现 18
总结 26
参考文献 27
1 绪论
1.1系统简介
每个酒店、宾馆的规模不同,有时的系统要求也会不一样。但是对于主要经营住房型的酒店而言,他的系统要求和其他差不多都是一样的,他们的组织机构也差不多是相同的,在客房管理系统中主要是对客房信息、房间备品信息、经营情况、营业统计、客户的入住信息、员工信息、客户信息反馈、客户网上订房信息、房间类型等进行管理。这样,对客户和工作人员都带来了方便.对客户而言,他们可以在网上就查到酒店客房的类型,价格等等;真正对于工作人员来讲,可以让工作人员及时了解到关于客房的所有信息,比如还剩余多少房间、哪些顾客需要结账了,避免一些不必要的差错,提高他们的工作效率。
1。2设计目的
这次是利用Powerdesigner进行数据库的设计与实现,完成对客房管理系统的数据库设计与实现。客房管理系统的目的是实现电子信息化,利用数据库的实现对客房的管理,在这个系统中,主要任务是:
(1) 真正做到为用户服务,按照客房管理工作的基本流程设计出符合要求的数据库
(2) 该系统主要面对的用户是客房的工作人员,要实现方便、快捷、简单、便于操作
(3) 提供一些基本功能,比如查询、修改等功能,以提高工作效率,实现信息化
1.3设计内容
根据客房管理系统的要求内幕的而言,在这个系统中观要实现
(1) 系统的需求分析
(2) 概念模型的设计
(3) 逻辑模型的设计
(4) 物理模型的设计
(5) 数据库的实现
2 需求分析
2.1 .需求分析的任务
进行整个数据库设计必须准确了解与分析用户需求(包括数据和处理)。需求分析是整个设计过程的基础,是最困难、最耗费时间的一步。作为地基的需求分析是否做得充分与准确,决定了在其上构建数据库大厦的速度和质量。
需求分析的任务是通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统(手工系统或计算机系统)工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。
需求分析调查的重点是“数据”和“处理”,通过调查、收集和分析,获得用户对数据库的如下需求:
(1)信息需求。指用户需要从数据库中获得信息的内容与性质。由信息要求可以导出数据要求,即在数据库中需要存储哪些数据。
(2)处理要求。指用户需要完成什么处理功能。明确用户对数据有什么样的处理要求,从而确定数据之间的相互关系。
(3)安全性与完整性要求。
2。2 系统数据流程分析
1)基本业务调查
通过网上调查、查阅相关的书籍、开座谈会、跟班作业等方法,对所设计系统的业务进行调查,明确其基本功能为:实现订房信息的管理,比如:添加、删除、修改、查询,前台管理,比如:结账、登记等,还有系统用户管理,比如修改密码、注册、管理等。根据需求分析,整个系统可以分为二部分,分别为:(1)前台查询(2)后台管理
2) 数据流程图
(1) 前台查询数据流程图
(2) 后台管理数据流程图
2.3 数据字典
在数据流程图中,数据信息和处理过程需要通过数据字典才能描述清楚,因此在数据字典中主要对数据流程图中的数据流、数据存储和处理过程给出更详细、更准确的说明。
1)数据流定义
可以通过表格的形式给出数据流程图的主要数据流,如表2。1所示.
表2。1 客房管理系统主要数据流定义
序号
名称
位置
结构定义
最大数据流量
1
查询各种信息
工作人员→查询
客户信息+客房信息+客房状态信息
1000次/天
2
入住申请
顾客→入住登记
顾客编号+顾客姓名+顾客电话+客房编号
1000次/天
3
退房申请
顾客→退房登记
顾客编码+顾客姓名+客房编码+费用
1000次/天
4
传递信息
前台→信息存储
客户信息+客房信息+客房状态
1000次/天
5
收到信息
后台→修改信息
新的客户信息+新客房信息+新客房状态
1000次/天
6
新客户信息
后台→数据存储
顾客编码+顾客姓名+顾客电话+客房编码
1000次/天
7
新信息传递
修改信息→前台
新的客户信息+新客房信息+新客房状态
1000次/天
2) 数据存储定义
可以采用如下表格的形式给出系统的主要数据定义,如表2.2所示。
表2。2 客房管理系统主要数据存储定义
编号
名称
输入
输出
数据量
存取频度
存取方式
说明
D1
客户信息表
客户编号
客户详细信息
2500条
2500次/天
联机处理;检索和更新;随即检索
客户编号唯一
D2
客房信息表
客房编号
客房详细信息
2500条
2500次/天
联机处理;检索和更新;随即检索
客房编号唯一
D3
预订信息表
预定编号
预定详细信息
2500条
2500次/天
联机处理;检索和更新;随即检索
预定编号唯一
D4
入住信息表
入住 编号 ;
房间号;
客户编号
入住详细信息
1500条
2000次/天
联机处理;检索和更新;随即检索
入住编号唯一
D5
消费结算表
账单编号;客户号;消费总额
消费结算详细信息
1500条
1500次/天
联机处理;检索和更新;随即检索
账单编号唯一
D6
退房信息
退房编号;顾客编号;客房编号
退房详细信息
1500条
1500次/天
联机处理;检索和更新;随即检索
退房编号唯一
3)处理过程
可以采用如下表格的形式给出系统的主要处理过程定义,如表2.3所示.
表2.3 客房管理系统主要处理过程定义
序号
处理过程名称
输入
输出
处理说明
P1。1
查询
查询条件
与之相符的数据
在系统存储的信息中检索符合要求的信息记录并输出
P1.2
入住登记
顾客编号;客房编号
顾客的入住信息
在客户信息表和客房信息表、客房状态信息中增加数据
P1.3
退房登记
顾客编号;客房编号
顾客的所有信息
在客户信息表和客房信息表、客房状态信息中删除数据
P1。4
结算
顾客编号
顾客的消费信息
在消费结算表中得到所消费的金额
P2。1
信息存储
新加入信息
所有信息
将新加入的信息传递给后台,进行信息的统一存储
P2.2
修改信息
要修改的信息
修改后的信息
将要修改的信息传递给后台进行数据修改
P2。3
数据备份
要备份的信息
备份后的信息
将信息传递给后台进行数据备份
3 概念模型设计
3。1 概念模型设计的方法和步骤
(1)根据需求分析,确定系统中的实体及属性,根据上面的分析,在这个系统中,确定了10个实体
① 顾客(顾客编号,顾客姓名,身份证号,顾客性别,顾客电话,顾客地址,预交款,余额)
② 客房基本信息(客房编号,客房类型,客房价格,客房楼层,备注)
③ 客房状态信息(客房编号,顾客编号,入住时间,退房时间,入住价格)
④ 员工(员工编号,部门编号,员工姓名,员工性别,员工电话,员工住址)
⑤ 部门(部门编号,部门名称,部门电话,部门地址)
⑥ 入住信息(入住编号,入住时间,入住人数,备注)
⑦ 退房信息(退房编号,退房时间,备注)
⑧ 消费项目基本信息(消费编号,消费类型,消费价格,备注)
⑨ 订单信息(订单编号,入住时间,离开时间,人数)
⑩ 楼层信息(楼层编号,楼层名称,备注)
并利用powerdesigner创建这些实体,如下图所示:
(2) 建立实体之间的联系
① 楼层信息和客房基本信息:一对多,一个楼层可有有多个客房,一个客房只能属于一个楼层
② 客房基本信息和员工:多对多,一个客房可以有多个员工工作,而且一个员工可以工作于多个客房
③ 部门和员工:一对多,一个部门可以有多个员工,一个员工只能属于一个部门
④ 客房基本信息和客房状态信息:一对一,一个客房只能有一个状态信息,一个状态信息也只能对应一个客房
⑤ 客房状态信息和订单信息:多对一,一个状态信息只能对应一个订单,一个订单可以对应多个客房状态
⑥ 顾客和订单信息:一对多,一个顾客可以有多个订单,但一个订单只能对应一个顾客
⑦ 顾客和入住信息:一对一,一个顾客只能有一个入住信息,一个入住信息只能对应一个顾客
⑧ 顾客和退房信息:一对一,一个顾客只能有一个退房信息,一个退房信息只能对应一个顾客
⑨ 顾客和消费项目基本信息:多对多,一个顾客可以有多个消费项目,一个消费项目也可以被多个顾客消费.
最后利用powerdesigner完成实体间关系
3.2 系统概念模型
利用powerdesigner完成所涉及的概念模型
客房管理CDM
4 逻辑模型设计
4.1 逻辑模型设计的方法
(1) 打开CDM模型,选择Tools→Generate Logical Data Model命令,打开如下图所示的LDM Generation Options窗口。
(2) 选择Detail选项卡,进行设置
(3) 选择Selection选项,可以选择CDM、实体,如图所示:
(4) 按“确定",开始生成LDM
4。2 逻辑模型实现
客房管理LDM模型
4.3 数据完整性约束定义
根据上面的关系模式,数据库的完整性约束如下所示:
1) 实体完整性约束
(1) 楼层信息(楼层编号)
(2) 客房基本信息(客房编号,楼层编号)
(3) 员工(员工编号,部门编号)
(4) 部门(部门编号)
(5) 订单信息(订单编号,顾客编号)
(6) 客房状态信息(客房编号,订单编号)
(7) 顾客(顾客编号)
(8) 入住信息(入住编号,)
(9) 退房信息(退房编号,)
(10) 消费项目基本信息(消费编号)
2)参照完整性约束
3)用户自定义完整性约束
(1)员工编号 like '[0-9][0—9][0-9][0-9][0-9][0—9]’
(2)部门编号 like’[0—9][0-9][0-9][0—9]'
(3)楼层编号 like’F[0—9][0—9][0—9][0—9]'
(4)订单编号 like’[1—9][0-9][0-9][0-9][0—9][0—9][0—9][0-9][0-9]'
5 物理数据库模型设计与实现
5.1 物理数据库模型的图示
由CDM生成PDM的过程和生成LDM的过程有些类似,生成PDM模型如下所示:
5.2 物理数据库模型的详细表示
(1)list of diagram
Name
Code
Diagram_1
Diagram_1
(2)list of table colums
Name
Code
消费编号
Co—Id
消费类型
Co_type
消费价格
Co_price
员工编号
S_Code
部门编号2
D_Code
部门编号
Depart_Code
员工住址
S_Adress
员工姓名
S_Name
员工性别
S_Sex
员工电话
S_tel
客房编号2
Room_Code
客房编号
R_Code
顾客编号
C_Code
入住时间
I_time
订单编号
Order_code
退房时间
L_time
入住价格
price
楼层编号
F_Code
楼层名称
F_Name
备注
BeiZhu
订单编号
Order_code
顾客编号
Client_code
入住时间
In_Time
退房时间
L_time
人数
count
客房编号
Room_Code
楼层编号
F_Code
客房类型
Room_Type
客房价格
Room_Price
客房楼层
Room_Floor
备注
BeiZhu
顾客编号
Client_code
退房编号
Tui_Code
入住编号
In_Code
顾客姓名
Client_name
身份证号
ID
顾客性别
Client_sex
顾客电话
Client_tel
顾客地址
Client_adress
预交款
Pre_money
余额
Balance
入住编号
In_Code
顾客编号
Client_code
入住时间
In_Time
入住人数
In_count
备注
BeiZhu
退房编号
Tui_Code
顾客编号
Client_code
退房时间
Tui_time
备注
BeiZhu
员工编号
S_Code
客房编号
Room_Code
顾客编号
Client_code
(3)list of refenences
Name
Code
Parent Table
Child Table
1
1
楼层信息
客房基本信息
4
4
订单信息
客房状态信息
7
7
顾客
订单信息
be left
be left
退房信息
顾客
be lived in
be lived in
入住信息
顾客
be owed by
be owed by
顾客
6
have
have3
消费项目基本信息
6
have
have2
员工
3
have
have
客房基本信息
客房状态信息
leave
leave
顾客
退房信息
live
live
顾客
入住信息
ordered
ordered
客房基本信息
3
response
response
客房状态信息
客房基本信息
(4) list of tables
Name
Code
3
3
6
6
入住信息
入住信息
员工
员工
客房基本信息
客房基本信息
客房状态信息
客房状态信息
楼层信息
楼层信息
消费项目基本信息
消费项目基本信息
订单信息
订单信息
退房信息
退房信息
顾客
顾客
5.3 物理数据库模型的实现
SQL语句如下:
create table 3 (
S_Code int not null,
Room_Code int not null,
constraint PK_3 primary key (S_Code, Room_Code)
)
go
create index have2_FK on 3 (
S_Code ASC
)
go
create index ordered_FK on 3 (
Room_Code ASC
)
go
create table 6 (
Client_code int not null,
”Co-Id" int null,
constraint PK_6 primary key (Client_code)
)
go
create index have3_FK on 6 (
”Co-Id" ASC
)
go
create table 入住信息(
In_Code int not null,
Client_code int null,
In_Time datetime null,
In_count int null,
BeiZhu varchar(50) null,
constraint PK_入住信息primary key nonclustered (In_Code)
)
go
create index live_FK on 入住信息(
Client_code ASC
)
go
create table 员工(
S_Code int not null,
D_Code int null,
Depart_Code int null,
S_Adress varchar(50) null,
S_Name char(10) null,
S_Sex char(2) null,
S_tel int null,
constraint PK_员工primary key nonclustered (S_Code)
)
go
create table 客房基本信息(
Room_Code int not null,
F_Code char(20) null,
R_Code int null,
Room_Type char(10) null,
Room_Price money null,
Room_Floor char(20) null,
BeiZhu varchar(50) null,
constraint PK_客房基本信息primary key nonclustered (Room_Code)
)
go
create index 1_FK on 客房基本信息(
F_Code ASC
)
go
create index response_FK on 客房基本信息(
R_Code ASC
)
go
create table 客房状态信息(
Room_Code int null,
R_Code int not null,
C_Code int null,
I_time datetime null,
Order_code int null,
L_time datetime null,
price char(10) null,
constraint PK_客房状态信息primary key nonclustered (R_Code)
)
go
create index have_FK on 客房状态信息(
Room_Code ASC
)
go
create index 4_FK on 客房状态信息(
Order_code ASC
)
go
create table 楼层信息(
F_Code char(20) not null,
F_Name char(20) null,
BeiZhu varchar(50) null,
constraint PK_楼层信息primary key nonclustered (F_Code)
)
go
create table 消费项目基本信息(
"Co-Id" int not null,
Co_type char(20) null,
Co_price char(10) null,
constraint PK_消费项目基本信息primary key (”Co-Id”)
)
go
create table 订单信息(
Order_code int not null,
Client_code int null,
In_Time datetime null,
L_time datetime null,
count int null,
constraint PK_订单信息primary key nonclustered (Order_code)
)
go
create index 7_FK on 订单信息(
Client_code ASC
)
go
create table 退房信息(
Tui_Code int not null,
Client_code int null,
Tui_time datetime null,
BeiZhu varchar(50) null,
constraint PK_退房信息primary key nonclustered (Tui_Code)
)
go
create index leave_FK on 退房信息(
Client_code ASC
)
go
create table 顾客(
Client_code int not null,
Tui_Code int null,
In_Code int null,
Client_name char(20) null,
ID char(20) null,
Client_sex char(2) null,
Client_tel int null,
Client_adress varchar(20) null,
Pre_money int null,
Balance int null,
constraint PK_顾客primary key nonclustered (Client_code)
)
go
create index "be lived in_FK” on 顾客(
In_Code ASC
)
go
create index ”be left_FK" on 顾客(
Tui_Code ASC
)
go
alter table 3
add constraint FK_3_HAVE2_员工foreign key (S_Code)
references 员工(S_Code)
go
alter table 3
add constraint FK_3_ORDERED_客房基本信息foreign key (Room_Code)
references 客房基本信息(Room_Code)
go
alter table 6
add constraint ”FK_6_BE OWED B_顾客" foreign key (Client_code)
references 顾客(Client_code)
go
alter table 6
add constraint FK_6_HAVE3_消费项目基本信息foreign key ("Co—Id")
references 消费项目基本信息("Co—Id")
go
alter table 入住信息
add constraint FK_入住信息_LIVE_顾客foreign key (Client_code)
references 顾客(Client_code)
go
alter table 客房基本信息
add constraint FK_客房基本信息_1_楼层信息foreign key (F_Code)
references 楼层信息(F_Code)
go
alter table 客房基本信息
add constraint FK_客房基本信息_RESPONSE_客房状态信息foreign key (R_Code)
references 客房状态信息(R_Code)
go
alter table 客房状态信息
add constraint FK_客房状态信息_4_订单信息foreign key (Order_code)
references 订单信息(Order_code)
go
alter table 客房状态信息
add constraint FK_客房状态信息_HAVE_客房基本信息foreign key (Room_Code)
references 客房基本信息(Room_Code)
go
alter table 订单信息
add constraint FK_订单信息_7_顾客foreign key (Client_code)
references 顾客(Client_code)
go
alter table 退房信息
add constraint FK_退房信息_LEAVE_顾客foreign key (Client_code)
references 顾客(Client_code)
go
alter table 顾客
add constraint "FK_顾客_BE LEFT_退房信息” foreign key (Tui_Code)
references 退房信息(Tui_Code)
go
alter table 顾客
add constraint "FK_顾客_BE LIVED _入住信息” foreign key (In_Code)
references 入住信息(In_Code)
go
生成数据库和表,如下所示:
总结
通过这段时间对客房管理系统数据库设计与实现,大概了解到了酒店客房管理或者宾馆的经营模式,其实整个系统其实是很复杂、很庞大的,自己只是把整个系统简化了。就是这样,自己在完成的过程中还是有很多问题,发现数据库的设计并不像自己想象中的简单好做,对于整个系统来说,数据库的设计是一个漫长的过程,要不断的根据运用的过程中的问题和需要进行改进。自己在查资料的过程中也发现,现代的信息管理系统给企业带来了诸多的好处.现在随着社会经济的发展,酒店与宾馆的业务也在不断的发展,实施数据库管理系统是很有必要的。
在这个过程中,自己遇到不少问题,也发现自己在学习过程中的不足。对自己来说,完成比较困难的还是数据流程图部分,需求分析.自己在业务流程图时还行,就是数据流程图画不出来,画好觉得怪怪的。但是只有在把流程图弄懂后,才能确定系统中的实体。对自己来说还有一个难点就是数据字典,自己并不知道数据字典的具体用法,在看过书后,才有所了解,不过还是不是很顺利。不过后面的建立CDM,LDM,PDM还算是顺利吧。总之,通过这次课程设计,巩固了学习过的数据库原理的基本应用,大型数据库在数据库设计中的应用,以及利用powerdesigner建模工具的应用,而且发现自己在学习这些课程过程中的不足,还需要下来再认真看看书本内容,好好加强。
参考文献
[1] 王珊,萨师煊.数据库系统概论(第四版)[M].北京:高等教育出版社,2006。5。
[2] 赵韶平等.PowerDesigner系统分析与建模(第2版). 北京:清华大学出版社,2010
[3] Data Modeling and Relational Database Design。 Oracle Inc. 2001
[4] Abraham SilberschatzHenryF.Korth ,S。Sudarshan。Database
System Conc
展开阅读全文