数据库设计报告.docx
- 文档编号:3985227
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:24
- 大小:692.38KB
数据库设计报告.docx
《数据库设计报告.docx》由会员分享,可在线阅读,更多相关《数据库设计报告.docx(24页珍藏版)》请在冰豆网上搜索。
数据库设计报告
《ORACLE数据库设计》课程设计报告
1、背景
随着宾馆业竞争的加剧,宾馆之间客源的争夺越来越激烈,宾馆需要使用更有效的信息化手段,拓展经营空间,降低运营成本,提高管理和决策效率,传统的宾馆计算机管理系统主要包括前台管理系统和后台管理系统两大部分,基本包含了宾馆主要业务部门,初步实现了对客户服务和进行财务核算所需要的各个功能,但传统的宾馆基于财务管理为主的设计理念,无法满足宾馆全面信息化管理的需要,现代宾馆酒店业迅速发展,新的管理观念与模式层出不穷,宾馆客房管理系统也随着宾馆管理理念的发展而发展。
宾馆客房管理系统依旧采用了先进的数据库理论,多媒体技术,软件工程理念等,从基层,中层,高层三个管理者层次为切入点,以成本分析,预测,控制为一线,形成一套上下贯通,操作便捷的酒店系统解决方案,科学地将宾馆各种日常业务完美的结合在一起,为管理及决策提供了强有力的支持,其对客人个性化服务及全面彻底的信息化,使企业电算化水平提升到了一个新的更高层次,提供大量丰富的基于企业管理经营过程中实际的数据。
2、需求分析
1)处理对象
系统要处理的对象包括信息管理、客户信息管理、客房信息管理、入住和退房管理、客房类型管理、费用管理、价目信息管理等7个方面、各个对象包含的信息如下所示:
(1)信息管理:
可以对于各种信息的查询,用户信息查看用户的个人信息,对用户的信息进行增、删、改、查。
(2)客户信息管理:
可以新建客户,输入客户的信息,可以对于客户的信息进行相应的修改,还可以对客户的消费信息进行统计。
(3)客房信息管理:
可以在相应的房间类型下面进行添加相应的房间,对相应的房间进行删除,查看空房以及客房的情况。
(4)入住和退房管理:
客户可以入住相应的类型房型下的空房,然后可以退房,系统自动将相应的订单状态置为失效,入住状态置为已退房,将相应房间的状态置为空房。
(5)客房类型管理:
管理员可以对相应的房型进行各种属性的修改,可以按照需求添加相应的房型,管理员、工作人员都可以查看相应的房型信息,管理员有需要时可以删除相应的房型,系统自动将该房型下的房间删除。
(6)费用管理:
管理员、工作人员都可以查看相应的费用信息,管理员有需要时可以对宾馆的收入与支出进行查询或修改。
(7)价目信息管理:
可以查看客房的收费标准,管理员可以对客房价格进行查询与修改,工作人员可以查看客房的价目信息。
2)系统功能分析
需要建立一个住房管理系统,需求分析结果如下:
(1)要求该系统能实现住房信息管理,客户信息管理等功能;
(2)一个房间有多少个床位,同一房间内的床位具有相同的收费标准。
不同类型的房间的床位收费标准可能不同;
(3)每个房间有房间号、收费标准、床位数目等信息;
(4)每位客人有身份证号码、姓名、性别、出生日期和地址等信息;
(5)对每位客人的每次住宿,应该记录其入住日期、退房日期和预付款额信息;
(6)管理系统可查询出客人住宿相关信息、房间信息。
3)安全性和完整性要求
安全性先通过试图机制,不同的用户只能访问系统授权de的视图,这样可以满足系统数据一定程度上的安全性,在通过用户授权机制,用户登录来识别用户级别,根据这个级别来分配用户权限,达到数据更高层次的安全保密功能。
系统完整性要求系统中数据的正确性以及相容性。
可以通过建立主、外键,使用check约束,或者通过使用触发器和级联更新。
八、设计内容(包含ER图、关系模型、视图、用户、触发器、存储过程、表空间、备份、安全性等)
1、系统功能图
系统功能模块图
2、客房管理系统E-R图
3、数据库的逻辑设计
E-R图向关系模型的转化结果如下:
客户Travellers(Tno,Tname,Tsex,Tid)
客房Rooms(Rno,Rstyle,Rprice,Rstate,Rtel)
客户住宿Living(Tno,Rno,Tcomedate,Tleftdate,Ttime,Tamount)
客户物品Roomitem(Rno,Ritemno,Ritemname,Ritemprice,Ritemstate,Ritemnum)
4、数据库的物理设计
以表单的形式给出数据库中的具体表的结构以及字段的说明。
表一客户基本信息表Travellers
表中列名
数据类型
可否为空
说明
Tno
Int
Notnull(主键)
客户编号
Tname
Char(10)
Notnull
客户姓名
Tsex
Char
(2)
Notnull
客户性别
Tid
Char(20)
Notnull
客户身份证号
表二客户基本信息表Rooms
属性名
数据类型
是否是主属性
是否为外键
完整性
属性描述
Rno
Int
是
否
Notnull
客房编号
Rstyle
char(10)
否
否
Notnull
客房档次
Rprice
Int
否
否
客房单价
Rstate
char(10)
否
否
客房状态
Rtel
char(15)
否
否
客房电话
表三客房物品信息表Roomitem
属性名
数据类型
是否为主属性
是否为外键
完整性
属性描述
Ritemno
Int
是
否
Notnull
客房物品编号
Rno
Int
否
是
Notnull
物品的客房号
Ritemname
Char(20)
否
否
Notnull
客房物品名称
Ritemprice
Int
否
否
客房物品单价
Ritemstate
Char(10)
否
否
客房物品状态
Ritemnum
Int
否
否
客房物品数目
表四客户住宿信息Living
属性名
数据类型
是否为主属性
是否为外键
完整性
属性描述
Tno
Int
是
是
Notnull
客户编号
Rno
Int
是
是
Notnull
客房编号
Tcomedate
Datetime
否
否
Notnull
入住日期
Tleavedate
Datetime
否
否
Notnull
结算日期
Ttime
Int
否
否
入住时间
Tamount
Int
否
否
房费金额
5、创建用户
设置密码和权限
6、建立视图
(1)查询客户信息的视图
(2)查询客房信息的视图
(3)查询客户住宿信息的视图
(4)查询客房物品信息的视图
7、设计触发器
(1)触发器p1的功能为当有一条信息插入Living表中时,触发Rooms表中的Rstate=‘满’。
(2)触发器p2的功能为当从Living表中删除一条信息时,触发Rooms表中的Rstate=‘空’。
8、存储过程
(1)客户选择客房处理
客户入住前要做的第一件事是选择合适的客房,客户将告知管理员自己需要的客房类型,管理员在系统中选择指定的客房类型后系统将实现所有该类型客房,并显示该类型客房价格供客户参考选择,这个处理过程可以通过一个存储过程来实现。
在这个存储过程中,需要的输入参数是客房类型,输出的结果集是所有这种客房类型的空房记录和价格。
定义这个存储过程名为SelRoom,定义输入的参数名为Roomstyle,定义输出的价格参数名为RoomPrice。
(2)客人信息查询处理
在实际应用中,经常会有这样的要求:
服务员需要通过客人的部分资料查询客人的全部信息以及客人住在哪一个客房。
由于需要通过输入查询条,才能得到结果集,所以可以设计一个带输入参数的存储过程来实现。
定义一个名为spClientInfo的存储过程,该存储过程以客人姓名(@ClientName)作为输入参数,存储过程返回到查询到的结果集。
9、建立索引
10、安全性设计
①主键约束、非空值约束
②CHECK约束客户性别
③使用缺省值入住时间
④惟一约束客房类别
⑤外键约束
九、调试过程中出现的问题及相应解决办法
1、出现的问题:
1)实验开始时无法连接到数据库。
2)在创建Roomitem表时缺失关键字
3)创建触发器的时候出现语法错误
4)创建索引时显示索引已存在
2、解决办法:
1)打开服务权限
2)增加一个外键
3)调整语句
4)主键存在,所以换成除主键以外的属性
十、源程序(数据库的实现)
1、表空间
表空间的创建(注意:
数据表空间和索引表空间分别建立在不同磁盘上。
//创建数据表空间
SQL>createtablespacedata
2logging
3datafile’D:
\app\Administrator\oradata\orcl\tbs.dbf’
4size100m
5reuseautoextendoff
表空间已创建
2、数据表
2.1数据表的创建
(1)创建客户基本信息表Travellers
表已创建
(2)创建客户基本信息表Rooms
表已创建
(3)创建客房物品信息表Roomitem
表已创建
(4)创建客户住宿信息Living
表已创建
2.2数据插入
3、用户
创建用户manager,设置密码,并赋予用户权限
4、视图
(1)查询客户(Travellers)信息的视图定义如下:
(2)查询客房(Rooms)信息的视图定义如下:
(3)查询客房物品(Roomitem)信息的视图定义如下:
(4)查询客户住宿(Living)信息的视图如下:
5、触发器
(1)触发器p1的功能为当有一条信息插入Living表中时,触发Rooms表中的Rstate=‘满’。
(2)触发器p2的功能为当从Living表中删除一条信息时,触发Rooms表中的Rstate=‘空’。
6、存储过程
(1)编写selroom的实现代码如下:
在上面的代码中包含了两个Select语句,第一个SELECT语句从客房信息表中选择了所有客房类型为输入参数指定类型并且客房状态为“空”(N)的客房号,并将所有记录作为结果集返回;第二个SELECT语句从客房类型中取得了制定客房类型的价格,作为输出参数Roomprice返回。
(2)编写spClientInfo的实现代码如下:
在上面的代码中,想spClientInfo传入客人姓名参数。
在WHERE子句中使用LIKE,并在参数前、后添加“%”,使得该存储过程具有模糊查询的功能。
比如,@ClientName参数中只输入客人的姓,就可以查询到所有该姓氏的客人信息。
7、索引
创建索引
8、备份数据
十一、课程设计心得体会
经过两天半的oracle数据库课程设计,我发现这是一门很有趣的课程,以前只是敲敲小代码,这次完全是自己选自己感兴趣的课题,然后到处搜集资料,设计架构,开始实际操作。
选课题时,心想这不就是一个数据库吗,感觉不是很难,可是真正开始做的时候,才发现自己的知识是多么的沧海一粟,根本做不出什么出色的东西,所以开始更加深入的学习。
其实无论是什么,只要你开始着手做了,你会越来越深陷其中。
当然,课程设计的过程中出了很多的问题,经过请教同学,查阅资料,上网XX,这些问题都得到了解决。
所以无论什么,只要我们想去学,没有什么是可以难倒我们的。
由于此次课程设计时间比较紧迫,所有我们一天都沉入其中去做了,第一天甚至是没去吃午饭,整个中午也不午睡,晚上熬到一两点就在敲代码写实验报告,就连厕所都只去了一次,更加没空去理我们无法脱手的手机了。
虽然又饿又累,但我却很喜欢也很享受这个过程,同学们互相之间的请教帮忙,老师的细心讲解,自己动手做事,这都让我觉得很充实。
因为好久好久都没有这种整天都在用脑做事的时候了。
课程设计刚开始的时候,其实有点无从下手,因为不熟悉。
所以开始花费了一些时间去了解软件的使用和实验说明,通过请教老师和同学这些都得到解决。
在还没问老师前,真的觉得迷茫,很烦,因为不会做,但当会了之后,编起来就顺手多了,自然而然思路也变得清晰明了起来。
总而言之,这次的课程设计我的收获颇多,让我对oracle数据库产生了很大的兴趣,希望我自己接下来能深入的去学习。
谢谢老师的教导,也谢谢老师给我这次机会实践。
参考文献
[1]日月科技.ORACLE从入门到精通[M].北京:
清华大学出版社,2007:
157-177.
代码:
-----------------------
createdatabasedb_hotel;
createtabletb_travellers(
tnointcheck(tno>=0andtno<9999),
tnamechar(10)notnull,
tsexchar
(2)check(tsexin('男','女')),
tidchar(20)notnull,
primarykey(tno)
);
------------------------------------------------------------
createtabletb_rooms(
rnointnotnull,
rstylechar(10)notnull,
rpriceint,
rstatechar(10),
rtelchar(15),
primarykey(rno)
);
------------------------------------------------------
createtabletb_roomitem(
ritemnointprimarykeynotnull,
rnointnotnull,
ritemnamechar(20)notnull,
ritempriceint,
ritemstatechar(10),
ritemnumint,
foreignkey(rno)referencestb_rooms(rno)
);
altertabletb_roomitemaddforeignkey(rno)referencestb_rooms
-----------------------------------------------------------
-------------------------------------------------------------
createtabletb_living(
tnoint,
rnointnotnull,
tcomedatedatenotnull,
tleavedatedatenotnull,
ttimeint,
tamountint,
primarykey(tno,rno),
foreignkey(tno)referencestb_travellers(tno),
foreignkey(rno)referencestb_rooms(rno)
);
createviewview_travellers(客户编号,客户姓名,客户性别,客户身份)
asselecttno,tname,tsex,tid
fromtb_travellers
--------------------------------------------------------------
createviewview_rooms(客房号,客房号类型,客房单价,客房状态,客房电话)
asselectrno,rstyle,rprice,rstate,rtel
fromtb_rooms
------------------------------------------------
createviewview_roomitem(客房号,客房物品编号,客房物品名称,客房物品状态,客房物品单价,物品数量)
asselectrno,ritemno,ritemname,ritemstate,ritemprice,ritemnum
fromtb_roomitem
----------------------------------------------------------------------
createviewview_living(客户编号,客房编号,入住日期,离开日期,住宿时间,房费)
asselecttno,rno,tcomedate,tleavedate,ttime,tamount
fromtb_living
-----------------------------
createtriggerp1
beforeinsert
ontb_living
begin
ifinsertingthen
updatetb_roomssetrstate='满'whererno=(selectrnofrominsert);
endp1;
------------------------------------------------------------
createtriggerp2
beforedelete
ontb_living
begin
ifdeletingthen
updatetb_livingsetrstate='空'whererno=(selectrnofromdelet);
endp2;
-------------
----------------------------------------------------------
createuniqueindextravnoontb_travellers(tname)
createuniqueindexroomnoontb_rooms(rprice)
createuniqueindexritemnoontb_roomitem(ritemprice)
createuniqueindexlivnoontb_living(rno)
--------------------------------------------------------------
createprocedureselroom
@rstylechar(10)
rpricesmallmoneyoutput
as
selectrnofromtb_rooms
where(rstyle=@rstyle)and(rstate='')
select@rprice=jiagefromrstyle
whererstyle=@rstyle
-----------------------------------------------------------------
createprocedurespclientinfo
@tnamevarchar(10)='%'
as
select*fromtb_travellers
where姓名=@tname+'%'
-------------------------------------------------------------------
createusermanageridentifiedby123456defaulttablespacetbs;
createtablespacetbsdatafile'D:
\app\Administrator\oradata\orcl\tbs.dbf'
size100m;
grantconnect,resource,sysdbatomanager;
--------------------------------------------
insertintotb_travellers(tno,tname,tsex,tid)
values(15,'韩红','女','123456699525463354');
insertintotb_travellers(tno,tname,tid,tsex)
values(2,'张靓颖',123553662325656,'女');
insertintotb_travellers(tno,tname,tid,tsex)
values(3,'孙楠',123553662325656,'男');
---------------------------------------------------------------
insertintotb_rooms(rno,rstyle,rprice,rstate,rtel)
values(2,'中级',180,'空',153414145411);
insertintotb_rooms(rno,rstyle,rprice,rstate,rtel)
values(3,'低级',99,'满',153414145411);
insertintotb_roomitem(ritemno,rno,ritemname,ritemprice,ritemstate,ritemnum)
values(1,1,'矿泉水',5,'完整',2);
insertintotb_roomitem(ritemno,rno,ritemname,ritemprice,ritemstate,ritemnum)
values(2,1,'方便面',10,'完整',2);
insertintotb_roomitem(ritemno,rno,ritemname,ritemprice,ritemstate,ritemnum)
values(3,1,'吹风机',80,'完整',1);
insertintotb_living(tno,rno,tcomedate,tleavedate,ttime,tamount)
values(1,1,'2015.1.10','2015.1.15',5,1580);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 设计 报告