您好,欢迎访问三七文档
《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客户客房物品客户编号客户姓名客户性别客户身份证号客房号客房类型客房单价客房状态客房电话住宿使用提供客房号物品编号物品名称物品状态物品单价物品数量客户编号房费结算日期住宿时间N11M1N客房号入住日期表中列名数据类型可否为空说明TnoIntNotnull(主键)客户编号TnameChar(10)Notnull客户姓名TsexChar(2)Notnull客户性别TidChar(20)Notnull客户身份证号表二客户基本信息表Rooms属性名数据类型是否是主属性是否为外键完整性属性描述RnoInt是否Notnull客房编号Rstylechar(10)否否Notnull客房档次RpriceInt否否客房单价Rstatechar(10)否否客房状态Rtelchar(15)否否客房电话表三客房物品信息表Roomitem属性名数据类型是否为主属性是否为外键完整性属性描述RitemnoInt是否Notnull客房物品编号RnoInt否是Notnull物品的客房号RitemnameChar(20)否否Notnull客房物品名称RitempriceInt否否客房物品单价RitemstateChar(10)否否客房物品状态RitemnumInt否否客房物品数目表四客户住宿信息Living属性名数据类型是否为主属性是否为外键完整性属性描述TnoInt是是Notnull客户编号RnoInt是是Notnull客房编号TcomedateDatetime否否Notnull入住日期TleavedateDatetime否否Notnull结算日期TtimeInt否否入住时间TamountInt否否房费金额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、表空间表空间的创建(注意:数据表空间和索引表空间分别建立在不同磁盘上。//创建数据表空间SQLcreatetablespacedata2logging3datafile’D:\app\Administrator\oradata\orcl\tbs.dbf’4size100m5reuseautoextendoff表空间已创建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数据库课程设计,我发现这是一门很有趣的课程,以前只是敲敲小代码,这次完全是自己选自己感兴趣的课题,然后到处搜集资料,设计架构,开始实际操作。选课题时,心想这不就是一个数据库吗,感觉不是很难,可是真正开始做的时候,才发现自己的知识是多么的沧海一粟,根本做不出什么出色的东西,所以开始更加深入的学习。其实无论是什么,只要你开始着手做了,你会越来越深陷其中。当然,课程设计的过程中出了很多的问题,经过请教同学,查阅资料,上网百度,这些问题都得到了解决。所以无论什么,只要我们想去学,没有什么是可以难倒我们的。由于此次课程设计时间比较紧迫,所有我们一天都沉入其中去做了,第一天甚至是没去吃午饭,整个中午也不午睡,晚上熬到一两点就在敲代码写实验报告,就连厕所都只去了一次,更加没空去理我们无法脱手的手机了。虽然又饿又累,但我却很喜欢也很享受这个过程,同学们互相之间的请教帮忙,老师的细心讲解,自己动手做事,这都让我觉得很充实。因为好久好久都没有这种整天都在用脑做事的时候了。课程设计刚开始的时候,其实有点无从下手,因为不熟悉。所以开始花费了一些时间去了解软件的使用和实验说明,通过请教老师和同学这些都得到解决。在还没问老师前,真的觉得迷茫,很烦,因为不会做,但当会了之后,编起来就顺手多了,自然而然思路也变得清晰明了起来。总而言之,这次的课程设计我的收获颇多,让我对oracle数据库产生了很大的兴趣,希望我自己接下来能深入的去学习。谢谢老师的教导,也谢谢老师给我这次机会实践。参考文献[1]日月科技.ORACLE从入门到精通[M].北京:清华大学出版社,2007:157-177.代码:-----------------------createdatabasedb_hotel;createtabletb_travellers(tnointcheck(tno
本文标题:数据库设计报告
链接地址:https://www.777doc.com/doc-2333248 .html