昆明学院ORACLE数据库应用大作业报告20191028
- 格式:doc
- 大小:2.80 MB
- 文档页数:38
oracle数据库实验报告《Oracle数据库实验报告》在当今信息化时代,数据库管理系统扮演着至关重要的角色。
Oracle数据库作为全球领先的企业级数据库管理系统,在各行各业都有着广泛的应用。
本次实验旨在通过对Oracle数据库的实验操作,深入了解其基本功能和特点,并探讨其在实际应用中的优势和局限性。
实验一:数据库的创建与连接在实验中,我们首先学习了如何使用SQL命令创建一个新的数据库,并通过用户名和密码连接到该数据库。
通过这一步骤,我们了解了Oracle数据库的基本操作流程,包括数据库的创建、用户的授权和连接等。
实验二:数据表的创建与管理在本次实验中,我们学习了如何使用SQL命令创建数据表,并进行数据的插入、查询、更新和删除操作。
通过这些操作,我们深入了解了Oracle数据库的数据管理功能,包括数据表的设计和维护等。
实验三:索引的创建与优化索引是数据库中非常重要的组成部分,能够提高数据的检索效率。
在本次实验中,我们学习了如何使用SQL命令创建索引,并通过优化查询语句来提高数据库的性能。
这些操作让我们更加深入地了解了Oracle数据库的优化功能,以及如何通过索引来提高数据库的性能。
实验四:备份与恢复数据库的备份与恢复是数据库管理中至关重要的一环。
在本次实验中,我们学习了如何使用Oracle数据库提供的工具进行数据库的备份和恢复操作。
这些操作让我们了解了数据库的灾难恢复功能,以及如何保障数据的安全性。
通过本次实验,我们深入了解了Oracle数据库的基本操作和功能,包括数据库的创建与连接、数据表的管理、索引的优化以及备份与恢复等。
同时,我们也发现了Oracle数据库在实际应用中的优势,如稳定性、安全性和性能优化等方面。
然而,我们也意识到Oracle数据库在一些特定场景下存在一定的局限性,如高昂的成本、复杂的配置和维护等。
总的来说,本次实验让我们更加深入地了解了Oracle数据库的特点和功能,对我们今后的数据库管理工作有着重要的指导意义。
Oracle数据库课程大作业任务一: 基础知识(1-2天)问题: 1) Oracle 的逻辑存储结构包括哪些结构对象?它们之间有什么关系?答:包括表空间、数据块、区、段。
1、每个表空间中可以存放一个或多个段;2、每个段是由一个或多个区段组成;3、每个区段是有一个或多个连续的Oracle连续的数据块组成。
2) Oracle 数据库服务端口默认是多少?答:15213)Oracle数据库实例的启动过程分为哪几个步骤?请分别写出以下情况下启动数据库的脚本:答:启动分为startup nomountalter database mountalter database opena)启动实例不加载数据库;答:sql>startup nomountb) 启动实例、加载数据库并保持数据库关闭;答:sql>startup nomountsql>alter database mountc) 启动实例、加载并打开数据库。
答:startup nomountalter database mountalter database open4)Oracle中有四种关闭数据库实例的方式,请写出其执行脚本。
答:shutdown immediate、shutdown normal、shutdown abort、shutdown transactional5)简述存储过程、函数和触发器的区别和联系。
答:触发器是特殊的存储过程,存储过程需要程序调用,而触发器会自动执行;函数是根据输入产生输出,自定义只不过输入输出的关系由用户来定义。
在什么时候用触发器。
要求系统根据某些操作自动完成相关任务,比如,根据买掉的产品的输入数量自动扣除该产品的库存量。
存储过程就是程序,它是经过语法检查和编译的SQL语句,所以运行特别快。
6)简述数据库索引的优点和缺点。
答:第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
2019年Oracle数据库分析报告2019年6月目录一、研究Oracle数据库的背景 (5)二、对数据库的理解 (8)1、如何理解数据库 (8)2、为什么需要数据库 (9)三、数据库的发展历程 (16)1、数据管理方式的演变 (16)(1)打卡机 (16)(2)从打卡机到数据卷筒和数据鼓 (17)(3)文件系统 (17)(4)数据管理系统 (18)2、数据库发展历史上的代表人物 (18)(1)Charles W. Bachman(查尔斯•巴赫曼):1973 主持设计与开发了最早的网状数据库管理系统IDS (19)(2)Edgar F. Codd(埃德加• 科德):1981 年提出关系型数据库 (20)(3)James Gray(詹姆斯•格雷):1998 解决了数据的完整性、安全性、并行性,以及从故障恢复方面发挥了十分关键的作用,提出并实现数据库事务处理 (21)(4)Michael Stonebraker (迈克尔.斯通布雷克) :2014创造了数据库系统一系列奠基性基本概念和实际技术。
(21)3、数据库:关系型数据库&非关系型数据库 (23)(1)关系型数据库 (24)(2)非关系型数据库 (25)4、事务型数据库&分析型数据库 (28)四、Oracle的数据库 (29)1、Oracle的数据库产品 (29)2、Oracle数据库的发展历程。
(31)(1)阶段一:Oracle9i之前,支持传统的C-S架构 (34)(2)阶段二:9i-12c,支持互联网计算环境 (35)(3)阶段三:12c之后,支持云计算环境,进入自治时代 (36)3、2018年,Oracle推出数据库最新版本Oracle 18c (37)(1)Oracle数据库最新产品:Oracle Database 18c (38)(2)自治数据库云 (40)4、主流数据库简介 (42)(1)Oraccle:适用于大型企业/中高端客户 (42)(2)SQLServer:适用于中型企业 (42)(3)MySQL:适用于小型网站 (43)(4)DB2 (43)(5)PostgreSQL (43)五、Oracle数据库面临的竞争 (45)六、数据库市场格局演化情况 (49)1、数据库总体排名 (49)2、关系型数据库总体排名 (50)3、key-value存储数据库总体排名 (50)4、文件数据库(Document Database)排名 (51)七、总结 (56)数据库作为计算机架构的核心底层软件,从1970年左右发展到现在,已经有五十年左右的时间。
五、思考题及其它1、显示游标和隐式游标在用法上的区别?2、raise语句应该放在PL/SQL块的哪个部分?当在异常和oracle错误之间建立关联时,应该在哪个部分完成?3、实验报告要求本次实验书写两次,分别是(一)和(二)、(三)和(四)实验六:过程、函数、触发器实验学时:4实验类型:设计型一.实验目的及要求1.掌握过程的创建与维护;2.掌握函数的创建与维护;3.掌握触发器的创建于维护;4.了解包的使用。
二、实验主要内容1.过程的创建与维护;2.函数的创建与维护;3.触发器的创建于维护;4.包的使用。
三、实验仪器设备在局域网环境下,有一台服务器和若干台客户机。
服务器成功安装Oracle 11g数据库服务器(企业版),客户机成功安装Oracle 11g客户端软件,网络服务配置正确,数据库和客户端正常工作。
四、实验内容与步骤(一)、过程的创建与维护1、编写一个过程,可以输入一个雇员名,如果该雇员的的职位为PRESIDENT就给他的工资增加1000,如果该雇员的职位为MANAGER,就给他的工资加500,其他职位的雇员工资增加200。
并在SQL*PLUS中调用该过程以修改FORD的工资。
2、创建一个过程avg_sal,用于输出emp表中某个部门的平均工资,并在PL/SQL匿名块中调用该过程输出20号部门的平均工资。
3、从雇员基本信息表(EMP)中统计各部门(DEPTNO)人数后,将结果打印出来。
(选做)CREATE OR REPLACE PROCEDURE SUM_COUNT IS--创建一个游标,查询dept所有的部门编号Dept_cursor %ROWTYPE; --定义一个游标类型的变量--定义一个变量来存储部门人数BEGIN--打开游标LOOPINTO Dept_cursor;--读取游标SELECT COUNT(*) INTO num FROM empWHERE deptno= Dept_cursor.deptno;/*--填充代码,打印输出部门号及其对应的部门人数*/EXIT WHEN %NOTFOUND;--退出循环END LOOP;--关闭游标COMMIT;END;--执行存储过程sum_count(二)、函数的创建与维护1、创建一个函数get_sum_salary,获取某部门的人数(out参数)和工资总和(返回值)。
实验报告课程名称:大型数据库系统实验项目:数据库实验实验地点:逸夫楼502专业班级:软件12xx 学号:201200xxxx 学生姓名:xx指导教师:宋成明2015年4月11日实验1创建数据库和表及表数据的插入、修改和删除一、实验目的和要求1.学会使用SQL语句手工出创建数据库,创建表;2.学会使用PL/SQL语句对数据库表进行插入、修改和删除数据的操作;3.学会使用SQL DEVELOPER对数据库表进行插入、修改和删除数据的操作;4.了解数据更新操作时要注意数据完整性;5.了解PL/SQL语句对表数据操作的灵活控制功能。
二、实验内容和原理分别使用SQL Developer和PL/SQL语句,在实验二建立的数据库YGGL或实验一随安装Oracle 11g时建立的数据库中所建立的三个表Employees, Departments和Salary中分别插入多行数据记录,然后修改和删除一些记录。
使用PL/SQL进行有限制的修改和删除。
表的内容如教材p311页所示。
使用PL/SQL命令操作数据。
内容如教材p312页所要求,给出相应语句段及结果截图。
三、主要仪器设备——系统运行的软硬件环境1.HP 6470b笔记本win7 32位系统2.Oracle 11g大型数据库及其相应的配套软件四、实验结果与分析1.在scott用户中创建表(1)Employees(员工信息表)表create table Employees(EmployeeID char(6) primary key,Name char(10) not null,Birthday date not null,Sex number(1) not null,Address char(20),Zip char(6),PhoneNumber char(12),DepartmentID char(3) not null);查看创建后的Employees表(2)Departments(部门信息)表create table Departments(DepartmentID char(3) primary key,DepartmentName char(20) not null,Note varchar2(100));查看创建后的Departments表(3)Salary(员工薪水情况)表create table Salary(EmployeeId char(6) primary key,InCome number(8,2) not null,OutCome number(8,2) not null);查看创建后的Salary表2.向表中插入数据(1)在Employees表中插入数据insert into employees values('000001','王林',to_date('19960123','YYYYMMDD'),1,'中山路32',210003,83355668,2); insert into employees values('010008','吴荣华',to_date('19760123','YYYYMMDD'),1,'北京东路',210001,83321321,1); insert into employees values('020010','王向荣',to_date('19821209','YYYYMMDD'),1,'四牌楼',210006,83792361,1); insert into employees values('020018','李丽',to_date('19600730','YYYYMMDD'),0,'中山东路',210002,83413301,1); insert into employees values('102201','刘明',to_date('19721018','YYYYMMDD'),1,'虎踞路',210013,83606608,5); insert into employees values('102208','朱俊',to_date('19650928','YYYYMMDD'),1,'牌楼巷',210004,84708817,5); insert into employees values('108991','钟敏',to_date('19790810','YYYYMMDD'),0,'中山路10',210003,83346722,3); insert into employees values('111006','张石兵',to_date('19741001','YYYYMMDD'),1,'解放路',210010,84563418,5); insert into employees values('210678','林涛',to_date('19770402','YYYYMMDD'),1,'中山北路',210008,83467336,3); insert into employees values('302566','李玉珉',to_date('19680920','YYYYMMDD'),1,'热河路',210001,58765991,4); insert into employees values('308759','叶凡',to_date('19781118','YYYYMMDD'),1,'北京西路',210002,83308901,4); insert into employees values('504209','陈林琳',to_date('19690903','YYYYMMDD'),1,'汉中路',210018,84468158,4);查看插入数据后的Employees表(2)在Departments表中插入数据insert into Departments values('1','财务部','null');insert into Departments values('2','人力资源部','null');insert into Departments values('3','经理办公室','null');insert into Departments values('4','研发部','null');insert into Departments values('5','市场部','null');查看插入数据后的Departments表(3)在Salary表中插入数据insert into Salary values('000001',2100.8,123.09);insert into Salary values('010008',1582.62,88.03);insert into Salary values('102201',2569.88,185.65);insert into Salary values('111006',1987.01,79.58);insert into Salary values('504209',2066.15,108.0);insert into Salary values('302566',2980.7,210.2);insert into Salary values('108991',3259.98,281.52);insert into Salary values('020010',2860.0,198.0);insert into Salary values('020018',2347.68,180.0);insert into Salary values('308759',2531.98,199.08);insert into Salary values('210678',2240.0,121.0);insert into Salary values('102208',1980.0,100.0);查看插入数据后的Salary表3.在表中修改数据例如:修改表Salary中某个记录的字段值update Salary set INCOME = 2890.5 where EmployeeID = '000001';查看修改后的数据4.在表中删除数据例如:删除表Salary中一行记录delete from Salary where EmployeeID = '000001';查看删除后的数据五、讨论、心得通过本次实验,对oracle的PL/SQL数据库建立语句、建表语句以及数据操作语句DML有了更加熟练的掌握和操作。
练习:用desc命令查看V$log视图的结构,并试着查询控制文件更详细的信息。
(3)控制文件通过如下方式查看控制文件相关信息:给出运行结果截图:练习:用desc命令查看V$controlfile视图的结构,并试着查询更详细的信息。
(4)参数文件①通过如下方式查看参数文件相关信息:a、show parameter显示服务器参数b、查询试图v$Parameter,可以利用该动态性能视图来确定参数的默认值是否被修改,以及是否可以用alter system和alter session命令修改阅读结果并理解各数据项的含义。
②修改服务器参数a、通过企业管理器(OEM)修改b、使用alter system修改服务器参数。
格式如下:Alter system set parameter =value <commernt =‘text’><feferred><scope=memory|spfile|both><sid=‘sid’|*>Eg:alter system set db_block_size=4096;练习:在%oracle_home%(如D:\app\Administrator\product\11.2.0\dbhome_1\database 或者D:\app\Administrator\product\11.2.0\dbhome_1\srvm\admin)找到名为SPFileSID.ora(如:SPfileorcl.ora)和init.ora的文件,此文件即为参数文件,用记事本或者写字板打开它们,阅读其内容并理解各数据项的作用。
3、Oracle逻辑存储结构(1)查看表空间的名称及大小执行以下语句,并给出运行结果。
(2)查看表空间物理文件的名称及大小执行以下语句,并给出运行结果。
(3)查看回滚段名称及大小执行以下语句,并给出运行结果。
(4)查看所有表空间对应的数据文件名:SQL>select distinct file_name,tablespace_name,AUTOEXTENSIBLEfrom dba_data_files;(5)查看表空间的使用情况:SQL>select sum(bytes)/(1024*1024) as free_space,tablespace_namefrom dba_free_space group by tablespace_name;(6)查看回滚段的使用情况,哪个用户正在使用回滚段的资源:SQL>select ername, from v$transaction t,v$rollstat r,v$rollname u,v$session swhere s.taddr=t.addr and t.xidusn=n and n=n order by ername;4、Oracle内存与进程结构(1)查看sga情况:SQL>SELECT NAME, BYTESFROM SYS.V_$SGASTAT ORDER BY NAME ASC;(2)数据库共享池性能检查:SQL>Select namespace,gets,gethitratio,pins,pinhitratio,reloads,Invalidations from v$librarycachewhere namespace in ('SQLAREA','TABLE/PROCEDURE','BODY','TRIGGER'); (3)检查共享内存的剩余情况:SQL>select request_misses, request_failuresfrom v$shared_pool_reserved;(4)数据高速缓冲区性能检查:SQL>select 1-p.value/(b.value+c.value) "db buffer cache hitratio"from v$sysstat p,v$sysstat b,v$sysstat cWhere ='physical reads' and ='db block gets'and ='consistent gets';(5)查看排序段的性能:SQL>SELECT name, valueFROM v$sysstatWHERE name IN ('sorts (memory)', 'sorts (disk)');(6)查看数据库中某用户,正在运行什么SQL语句SQL>SELECT SQL_TEXTFROM V$SQLTEXT T, V$SESSION SWHERE T.ADDRESS=S.SQL_ADDRESSAND T.HASH_value=S.SQL_HASH_value AND S.MACHINE='XXXXX' OR USERNAME='WACOS';4、其他(1)查看数据库库对象:SQL>select owner, object_type, status, count(*) count# from all_objectsgroup by owner, object_type, status;(2)查看数据库的创建日期和归档方式:SQL>Select Created, Log_Mode From V$Database;5、作业与思考练习题1、现有控制文件的位置及其名称是什么?提示:查询动态性能视图V$CONTROLFILE。
实验报告
课程名称:大型数据库系统
实验项目:数据库实验
实验地点:逸夫楼302
专业班级:软件1013班学号:2010004744 学生姓名:荆婉
指导教师:沈晋原
2013年4 月12 日
太原理工大学实验报告一
16.、SQL Plus的登录界面
17.SQL Developer的界面。
单击“创建”
创建表Employees如下
点击“确定”即可创建创建表Departments如下
单击“确定”即可创建创建表Salary如下
点击“使用选项删除”即可删除该表
9、在SQL Developer中创建表
根据教材p309页的要求,用SQL Developer在YGGL或实验一中创建的数据库重建上述各表。
注意,连接名可直接用数据库名而不必加'_ora',但要保证SID名要与数据库名一致。
给出相应过程及结果截图。
点击“确定”即可创建
点击“确定”即可创建
太原理工大学实验报告二
向Departments表中插入数据如下
(2)select Name,InCome,OutCome
from Employees,Salary,Departments
where Employees.EmployeeID= Salary.EmployeeID and Employees.DepartmentID= Departments.DepartmentID and
6、使用视图
按照教材p317的内容和步骤完成实验内容。
给出相应语句段和结果的对应截图。
8、创建视图
(2)使用视图
<1>查询财务部雇员的信息
太原理工大学实验报告三。
Oracle 数据库课程上机实验报告学院名称:专业班级:姓名:学号:实验成绩:任课教师:目录实验一 (3)实验三 ORACLE数据库结构与网络配置 (3)实验四 (8)实验五数据表及其操作 (10)实验六 SQL命令操作 (14)实验七创建索引 (21)实验一实验三 ORACLE数据库结构与网络配置实验内容与数据库结构相关的数据字典查询实验1、查看表空间的名称及大小2、查看表空间物理文件的名称及大小3、查看回滚段名称及大小4、查看控制文件5、查看日志文件6、查看表空间的使用情况7、查看数据库库对象8、查看数据库的版本9、查看数据库的创建日期和归档方式10、查看临时数据库文件常用数据库信息查看命令(1)oracle中怎样查看总共有哪些用户(2)查看oracle当前连接数(3)列出当前数据库建立的会话情况3.2 表空间操作●创建表空间●修改表空间的相关操作1)增加表空间中的数据文件2)删除表空间中的数据文件3)修改表空间文件的数据文件大小4)修改表空间数据文件的自动增长属性。
实验四实验五数据表及其操作实验内容5.1创建基本表以system用户登录sqlplus创建表空间创建Testpace表空间5.2修改表清空表中的数据5.3 删除表5.4聚集表(1)创建聚集(聚集表的创建与操作)引用参照完整性三表定义了suppliers,products,order details三表间的三个级联关系实验六 SQL命令操作实验内容6.1数据查询select创建student,sc,course三表,并且插入数据查询1:查询2:查询3:查询4;实验七创建索引实验内容7.1在emp表中的sal字段上创建一个名为index_sal的b树索引,按字段值的蒋序排序7.2 在dept表的dname字段上创建一个具有唯一性的b树索引,索引值为字母序排序。
7.3在emp表的ename和deptno字段上创建一个复合索引7.10将参数设置为跟踪状态,执行对emp表的查询命令,查看索引应用的跟踪结果。
实验一数据文件和表空间的管理【开发语言及实现平台或实验环境】Oracle10g【实验目的】(1)熟悉ORACLE的环境,学习使用SQL*Plus与ORACLE进行交互;(2)掌握连接数据库以及断开连接的方法;(3)掌握数据文件和控制文件的管理基本命令(4)掌握表空间管理的基本命令【实验原理】1.创建数据文件:2.修改数据文件大小3.删除某个表空间中的某个空数据文件4.创建表空间5.修改表空间【实验内容】用SYS登录到数据库:1.为Users表空间添加一个数据文件,文件名为users03.dbf,大小为50M。
表空间中间的数据文件可以在磁盘中间的任何位置,创建完成后会提示表空间已经修改2.修改上述数据文件为自动扩展方式,每次扩展5MB,文件最长100M。
3.修改上述数据文件为自动扩展方式,每次扩展5MB,文件最长无限制。
4.创建一个本地管理方式下自动分区管理的表空间USERTBS1,其对应的数据文件名称为USERTBS1_1.DBF,大小为20M。
5.为上述表空间USERTBS1添加一个数据文件USERTBS1_2.DBF,大小为20M。
6.修改表空间USERTBS1的数据文件USERTBS1_2.DBF大小为50M。
7.创建一个本地管理方式下的表空间USERTBS2,要求每个分区大小为512KB。
8.为数据库添加一个重做日志文件组,组内包含两个成员文件,分别为redo04a.log和redo04b.log,大小分别为5M。
9.为新建的重做日志文件组添加一个成员文件,名称为redo04clog。
【实验总结】此次实验,在安装oracle的基础之上,初步认识了oracle中间表空间级数据文件的管理的方法,主要包括:创建表、修改、删除一系列的操作,为以后的oracle学习打下了基础。
实验二模式对象的管理【开发语言及实现平台或实验环境】Oracle10g【实验目的】(1)学习基本数据库表的创建,表结构的修改与删除等命令;(2)学习索引的管理命令;(3)学习索引化表的管理命令(4)学习分区表的管理命令(5)学习簇、视图、序列、同义词等的管理命令【实验原理】基本表的管理、索引的管理、索引化表的管理、分区表的管理、簇的管理、视图的管理序列的管理、同义词管理【实验内容】要求:1.创建Class、Student两个表;2.为Student表添加一个可延迟的外键约束,其CNO列参照class表的CNO列;3.为student表的sex列添加一个检查约束,保证该列取值为“M”或“F”,且默认值为“M”;4. 在class表的CNAME列上创建一个唯一性索引;5.创建一个索引化表,其表结构与Student表相同;6.创建一个Student_range表(列、类型与student表的列、类型相同),按学生年龄分为3个区,低于20岁的学生信息放入part1区,存储在stbs1表空间中;20-30岁的学生信息。
《数据库原理与应用》综合设计任务书前言《数据库原理与应用》课程的重点知识模块包括:1)数据库设计、2)用SQL实现建库、建表、查询、更新、和创建视图、3)存储过程和触发器设计。
针对这三个应用能力,用一个案例作为背景,布置三次大作业。
在校大学生都能理解“图书管理系统”的应用场合和业务流程。
因此,以图书管理系统作为案例来布置作业,可以降低业务分析难度,让学生将主要精力放在知识消化与技术应用上。
本文档包括四个部分。
第一部分描述系统的需求,第二部分提出E-R模型设计和关系模型设计的任务;第三部分提出在SQL Server中,用SQL语句来建库、建表、查询、更新数据、创建视图的任务;第四部分,根据应用需求、安全需求和数据完整性要求,提出设计存储过程和触发器的任务。
每个任务之前,都给出了完成任务所需要掌握的关键知识点,学生可以在对这些知识点进行复习的基础上完成任务,每个任务是一次大作业。
第一部分案例的需求描述本部分描述“图书管理系统”的需求,学生通过阅读本部分内容,了解系统的功能要求、运行环境,对系统所需的数据有总体认识,作为三次作业的基础。
1.2 需求分析1)功能需求图1-1:功能需求示意图教师信息管理:用于教师基本资料的增删改查。
图书信息管理:用于图书基本信息的增删改查,分类统计图书册数和价值。
借书登记:记录借书时间、所借图书、借书人、办理人。
还书登记:记录还书时间、所还图书、还书人、办理人。
催还:查询借阅逾期的借书信息,给借书人发电子邮件,给借书人的部门打电话。
2)运行环境要求图1-2:运行环境拓扑图系统采用C/S模式,有两台PC和一台服务器,联成一个局域网。
PC上安装图书管理软件的客户端,服务器上安装DBMS,服务器也可由两台PC中的一台来代替。
第二部分作业1——E-R模型与关系模型设计(满分8分)本部分的任务是:在需求分析的基础上,进行E-R图设计,然后将E-R模型转换为关系模型。
任务:1)根据需求描述,绘制E-R图。
课程设计(大作业)报告课程名称:Oracle数据库应用设计题目:图书借阅管理系统院系:信息工程学院专业及班级:17计算机科学与技术二班设计者:刘旭学号:指导教师:**设计完成时间:2019年12月17日昆明学院昆明学院课程设计(大作业)任务书目录课程设计(大作业)报告 (1)昆明学院课程设计(大作业)任务书 (I)一、任务要求 (1)二、解决步骤 (1)1. 背景分析 (1)2. 需求分析 (2)3. 总体设计 (4)3.1表结构设计 (4)3.2总体设计ER图 (6)3.3总体设计类图 (7)4. 详细设计 (7)4.1数据字典 (11)4.2数据库实现 (15)4.3插入数据 (21)4.3图书管理系统测试 (25)4.4图书管理系统修改 (29)三、心得体会 (32)四、参考文献 (32)课程设计(大作业)报告一、任务要求Oracle数据库应用大作业使学生通过对Oracle数据库基础知识的学习,掌握Oracle数据库基本操作,使学生掌握应用Oracle数据库所必须的所有核心概念和内容,在这个过程中激发学生学习的兴趣,并为后续的专业课程的学习打下坚实的基础。
在课后几周,给学生布置一个Oracle数据库平台应用的任务。
学生在教师的指导下,以任务驱动方式使学生们熟练掌握Oracle数据库的基本应用。
具体要求:1.各小组请参看教材第236页,自选课题设计管理系统数据库;2.请将所学知识和技能充分运用到所设计的管理系统数据库中;3.要求数据库系统能正常运行,可进行查询;查询的复杂程度将最终决定该小组的得分高低。
(自拟查询任务并实现,小组内每位同学的查询任务应有区分);4.在所设计的数据库中尽可能多的创建数据库对象;5.文档撰写规范、整齐,图文并茂。
二、解决步骤1.背景分析图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。
根据调查得知,他们以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。
随着图书馆规模的不断扩大,图书数量也相应的增加,有关图书的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致图书馆管理上的混乱,人力与物力过多浪费,图书馆管理费用的增加,从而使图书馆的负担过重,影响整个图书馆的运作和控制管理。
总的来说,缺乏系统,规范的信息管理手段。
有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况。
2.需求分析(1) 学生基本信息的录入,包括学生学号、学生性别、学生院系。
(2) 学生基本信息的查询、修改, 包括学生学号、学生性别、学生院系。
(3) 教师基本信息的录入,包括教师学号、教师性别、教师院系。
(4) 教师基本信息的查询、修改, 包括教师学号、教师性别、教师院系。
(5) 读者基本信息的录入,包括借书证编号、读者姓名、读者性别、读者类型、学生学号、教师工号、登记日期。
(6) 读者基本信息的查询、修改,包括读者借书证编号、读者姓名、读者性别、读者类型、(学生学号\教师工号)、登记时间。
(7) 管理员信息的录入,包括管理员编号、姓名、性别、管理位置。
(8) 管理员信息的查询、修改,包括管理员编号、姓名、性别、管理位置。
(9) 书籍类别信息的录入,包括类别编号、类别名称、数量。
(10) 书籍类别信息的查询、修改,包括类别编号、类别名称、数量。
(11) 图书库信息的录入,包括图书库编号、图书库类别。
(12) 图书库信息的查询、修改,包括图书库编号、图书库类别。
(13) 书籍库存信息的录入,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期、登记日期、余量。
(14) 书籍库存信息的查询,修改,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期、登记日期、余量。
(15) 借书信息的录入,包括读者借书证编号、书籍编号、借书日期。
(16) 借书信息的查询、修改,包括借书证编号、读者编号、读者姓名、书籍编号、书籍名称、借书日期等。
(17) 还书信息的录入,包括借书证编号、书籍编号、还书日期。
(18) 还书信息的查询和修改,包括还书读者借书证编号、读者姓名、书籍编号、书籍名称、借书日期、还书日期等。
(19) 超期还书罚款录入,还书超出期限包括超出期限还书的读者借书证号,书籍编号,罚款金额。
(20) 超期还书罚款查询,包括读者借书证编号、读者姓名、书籍编号、书籍名称,罚款金额等(21) 图书挂失登记录入,包括读者借书证编号、读者姓名、书籍编号、书籍名称。
(22) 图书挂失登记查询,包括读者借书证编号、读者姓名、书籍编号、书籍名称3.总体设计3.1表结构设计(1) 教师( 教师编号,姓名,性别,所属学院)(2) 学生( 学生编号,姓名,性别,所属学院)(3) 读者(借书证编号,读者姓名,读者性别,读者种类,登记时期)(4) 管理员(管理员编号,管理员姓名,管理员性别,管理图书库位置)(5) 书籍类别(种类编号,种类名称)(6) 图书库(图书库编号,图书库位置)(7) 书籍(书籍编号,书籍名称,书籍类别,书记作者,出版社名称,出版日期,登记日期)(8) 借阅(借书证编号,书籍编号,读者借书时间)(9) 还书(借书证编号,书籍编号,读者还书时间)(10) 罚款(借书证编号,读者姓名,借书证编号,书籍编号,读者借书时间)(11) 挂失(借书证编号,读者姓名,借书证编号,书籍编号)(1) 在学生信息管理部分,要求:a.可以查询学生信息。
b.可以对学生信息进行添加及删除的操作。
(2) 在教师信息管理部分,要求:a.可以查询教师信息。
b.可以对教师信息进行添加及删除的操作。
(3) 在管理者信息管理部分,要求:a.示当前数据库中管理者情况。
b.对管理者信息维护操作。
(4) 在读者信息管理部分,要求:a.可以查询读者信息。
b.可以对读者信息进行添加及删除的操作。
(5) 在类别信息管理部分,要求:a.可以查询类别信息。
b.可以对类别信息进行添加及删除的操作。
(6) 在图书库信息管理部分,要求:a.可以查询图书库信息。
b.可以对图书库信息进行添加及删除的操作。
(7) 在书籍信息管理部分,要求:a.可以浏览书籍信息,要求:b.可以对书籍信息进行维护,包括添加及删除的操作。
(8) 在借阅信息管理部分,要求:。
a.可以浏览借阅信息。
b.可以对借阅信息进行维护操作。
(9) 在归还信息管理部分,要求:a.可以浏览归还信息b.对归还信息可修改维护操作(10) 在罚款信息管理部分,要求:a.可以浏览罚款信息b.对罚款信息可以更新(11) 在挂失信息管理部分,要求:a.可以浏览挂失信息b.对挂失信息可以更新3.2总体设计ER图图1-1 1总体设计ER图3.3总体设计类图4.详细设计根据所要实现的功能设计,可能建立它们之间的关系,进而实现逻辑结构功能。
图书管理信息系统可以划分的实体有:教师信息实体、学生信息实体、管理员信息实体、读者信息实体、书籍类别信息实体、图书库信息实体、书籍信息实体、借阅记录信息实体、归还记录信息实体、逾期罚款信息实体、图书挂失信息实体。
用E-R图来描述这些实体。
1、学生实体E-R图图1-1 3 学生实体E-R图2、教师实体E-R图图1-1 4 教师实体E-R图3、管理员实体E-R图图1-1 5 管理员实体E-R图4、读者实体E-R图图1-1 6 读者实体E-R图5、图书类别实体E-R图图1-1 7 图书类别实体E-R图6、图书库类别实体E-R图图1-1 8 图书库类别实体E-R图7、图书类别实体E-R图1-1 9 图书类别实体E-R 8、借阅实体E-R图1-1 10 借阅记录实体E-R 9、还书实体E-R图1-1 11 还书实体E-R 10、逾期罚款实体E-R图1-1 12 逾期罚款实体E-R 、图书挂失实体E-R114.1数据字典1、书本类别表建立2、图书库表3、创建书库表4、学生表5、教师表6、管理员表7、借书证表建立8、借书记录表建立9、还书记录表建立10、罚款单表建立11、挂失表建立4.2数据库实现1、创建表空间CREATE SMALLFILE TABLESPACE "TSGL_TEMP1" DATAFILE 'D:\ORACLE\data\TSGL_TEMP.DBF' SIZE 100MLOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO2、书本类别表建立CREATE TABLE book_style(bookstyleno VARCHAR(30) PRIMARY KEY,bookstyle VARCHAR(30),booktotal VARCHAR(30));3、创建图书库表CREATE TABLE book_lib(booklibid VARCHAR(30) PRIMARY KEY,booklibpos VARCHAR(30));4、创建书库表CREATE TABLE books(bookid VARCHAR(20) PRIMARY KEY,bookname VARCHAR(30) NOT NULL ,bookstyleno VARCHAR(30) NOT NULL ,booklibid VARCHAR(30) NOT NULL ,bookauthor VARCHAR(30) ,bookpub VARCHAR(30) ,bookpubdate DATE ,bookindate DATE ,isborrowed VARCHAR(2)check(isborrowed>=0) , FOREIGN KEY (bookstyleno) REFERENCES book_style (bookstyleno),FOREIGN KEY (booklibid) REFERENCES book_lib (booklibid));5、管理员表创建CREATE TABLE DB(DBid VARCHAR(20) PRIMARY KEY,DBname VARCHAR(30) NOT NULL ,DBsex VARCHAR(2) NOT NULL ,booklibid VARCHAR(30),FOREIGN KEY (booklibid) REFERENCES book_lib (booklibid));6、学生表CREATE TABLE student(studentname VARCHAR(30)NOT NULL ,studentsex VARCHAR(2) NOT NULL ,studentfaculty VARCHAR(30)NOT NULL );7、教师表CREATE TABLE teacher(teachertid VARCHAR(30)PRIMARY KEY,teachername VARCHAR(30)NOT NULL ,teachersex VARCHAR(2) NOT NULL ,teacherfaculty VARCHAR(30)NOT NULL );8、借书证表建立CREATE TABLE readers(readerid VARCHAR(9)PRIMARY KEY,readername VARCHAR(9)NOT NULL ,readersex VARCHAR(2) NOT NULL ,readertype VARCHAR(10) ,studentid VARCHAR(9) ,teachertid VARCHAR(9) ,regdate DATE ,FOREIGN KEY (studentid) REFERENCES student(studentid), FOREIGN KEY (teachertid) REFERENCES teacher(teachertid) );9、借书记录表建立CREATE TABLE borrow(bookid VARCHAR(20) PRIMARY KEY,readerid VARCHAR(9),borrowdate DATE ,FOREIGN KEY (bookid) REFERENCES books(bookid), FOREIGN KEY (readerid) REFERENCES readers(readerid));10、还书记录表建立CREATE TABLE return(readerid VARCHAR(9) ,FOREIGN KEY (bookid) REFERENCES books(bookid),FOREIGN KEY (readerid) REFERENCES readers(readerid));11、罚款单表建立CREATE TABLE fee(readerid VARCHAR(9)NOT NULL ,readername VARCHAR(9)NOT NULL,bookid VARCHAR(20) PRIMARY KEY ,bookname VARCHAR(30) NOT NULL,bookfee VARCHAR(30) ,borrowdate DATE,FOREIGN KEY (bookid) REFERENCES books(bookid),FOREIGN KEY (readerid) REFERENCES readers(readerid));12、图书挂失表CREATE TABLE loss(readerid VARCHAR(9) PRIMARY KEY ,readername VARCHAR(9) NOT NULL ,bookid VARCHAR(20) NOT NULL ,bookname VARCHAR(30) NOT NULL ,FOREIGN KEY (bookid) REFERENCES books(bookid),FOREIGN KEY (readerid) REFERENCES readers(readerid));13、教师图书借阅视图create view teacher_Viewasselectteacher.teachertid,teacher.teachername,readers.readertype,b orrow.bookidfrom teacher,readers,borrowwhere teacher.teachertid=readers.teachertid and readers.readerid=borrow.readerid14、学生图书借阅视图create view student_Viewasselectstudent.studentid,student.studentname,readers.readertype,bo rrow.bookidfrom student,readers,borrowwhere student.studentid=readers.studentid and readers.readerid=borrow.readerid15、图书借阅视图create view borrow_Viewasselect books. bookid,books.bookname,book_style.bookstyle,borrow.readerid, borrow.borrowdatefrom books,book_style,borrowwhere book_style.bookstyleno=books.bookstyleno and books.bookid =borrow.bookid16、图书归还视图create view return_Viewasselectbooks.bookid,books.bookname,book_style.bookstyle,return.rea derid,return.returndatefrom books,book_style,returnwhere book_style.bookstyleno=books.bookstyleno and books.bookid =return.bookid17.图书库索引,以(booksid)为降序排列create index books_index on books(bookid desc);18.读者索引,以(readerid)为降序排列create index readers_index on readers(readerid desc);19.借书索引,以(bookid) 为降序排列create index borrow_index on borrow(bookid desc);20.还书索引,以(bookid) 为降序排列create index return_index on return(bookid desc);21.创建存储过程图书借阅和归还,图书余量自动改变CREATE OR REPLACE PROCEDURE book_(book_num in VARCHAR,flag in int)ASbeginif(flag=1) then --还书update booksset isborrowed=isborrowed+1where bookid=book_num;elsif(flag=0) then --借书update booksset isborrowed=isborrowed-1where bookid=book_num;end if;end;22.查询图书余量函数CREATE OR REPLACE FUNCTION getBookNum(book_num VARCHAR) return INTisNums INT;BEGINselect isborrowed into Numsfrom bookswhere bookid = book_num;return Nums ;END;23.触发器禁止删除图书表数据create or replace trigger update_books_infobefore delete or updateon booksfor each rowbeginif deleting thenraise_application_error(-20001,'不允许删除数据!');end if;end;4.3插入数据1、将书籍类别加入表book_style中INSERT INTO "BOOK_STYLE" VALUES ('1', '人文艺术类','200'); INSERT INTO "BOOK_STYLE" VALUES ('2', '自然科学类','300'); INSERT INTO "BOOK_STYLE" VALUES ('3', '社会科学类','200'); INSERT INTO "BOOK_STYLE" VALUES ('4', '图片艺术类','400'); INSERT INTO "BOOK_STYLE" VALUES ('5', '政治经济类','500'); INSERT INTO "BOOK_STYLE" VALUES ('6', '工程技术类','1000'); INSERT INTO "BOOK_STYLE" VALUES ('7', '语言技能类','200');2、将图书库添加到表book_lib中INSERT INTO "BOOK_LIB" VALUES ('01', '东北角');INSERT INTO "BOOK_LIB" VALUES ('02', '东南角');INSERT INTO "BOOK_LIB" VALUES ('03', '西南角');INSERT INTO "BOOK_LIB" VALUES ('04', '西北角');3、将管理员添加到表DB中INSERT INTO "DB" VALUES ('1','王兰溪','女','1');INSERT INTO "DB" VALUES ('2','刘语蝶','女','2');INSERT INTO "DB" VALUES ('3','张意超','男','3');INSERT INTO "DB" VALUES ('4','李朝健','男','4');4、将已有的图书加入books表中INSERT INTO "BOOKS" VALUES ('01', '计算机组成原理', '6','1', '王爱英', '清华大学出版社', TO_DATE('2019-01-03', 'YYYY-MM-DD '), TO_DATE('2019-9-15', 'YYYY-MM-DD'), '6'); INSERT INTO "BOOKS" VALUES ('02', '数据库原理', '6','1', '萨师煊', '高等教育出版社', TO_DATE('2019-01-03', 'YYYY-MM-DD'), TO_DATE('2019-9-15', 'YYYY-MM-DD'), '6'); INSERT INTO "BOOKS" VALUES ('03', 'C程序设计', '6','1', '谭浩强', '清华大学出版社', TO_DATE('2019-01-03', 'YYYY-MM-DD'),TO_DATE('2019-9-15', 'YYYY-MM-DD'), '6');INSERT INTO "BOOKS" VALUES ('04', '计算机体系结构','2', '2', '石教英', '浙江大学出版社', TO_DATE('2019-01-03', 'YYYY-MM-DD '), TO_DATE('2019-9-15', 'YYYY-MM-DD'), '6'); INSERT INTO "BOOKS" VALUES ('05', '数据结构(C语言版)', '6', '2','吴伟民,严蔚敏', '清华大学出版社', TO_DATE('2019-01-03', 'YYYY-MM-DD'), TO_DATE('2019-9-15', 'YYYY-MM-DD'), '6'); INSERT INTO "BOOKS" VALUES ('06', '中华历史5000年', '1','2', '吴强', '北京大学出版社', TO_DATE('2019-01-03', 'YYYY-MM-DD '), TO_DATE('2019-9-15', 'YYYY-MM-DD'), '6');INSERT INTO "BOOKS" VALUES ('07', '古代埃及', '3', '3','赵文华', '北京大学出版社', TO_DATE('2019-01-03', 'YYYY-MM-DD'), TO_DATE('2019-9-15', 'YYYY-MM-DD'), '6');INSERT INTO "BOOKS" VALUES ('08', '日本文化', '1','3', '吴小鹏', '北京大学出版社', TO_DATE('2019-01-03', 'YYYY-MM-DD'), TO_DATE('2019-9-15', 'YYYY-MM-DD'), '6');INSERT INTO "BOOKS" VALUES ('09', '微观经济学', '5','3', '李小刚', '北京大学出版社', TO_DATE('2019-01-03 ', 'YYYY-MM-DD '), TO_DATE('2019-9-15', 'YYYY-MM-DD'), '6');INSERT INTO "BOOKS" VALUES ('10', '影视文学', '4','4', '苏庆东', '北京大学出版社', TO_DATE('2019-01-03', 'YYYY-MM-DD'), TO_DATE('2019-9-15', 'YYYY-MM-DD'), '6');INSERT INTO "BOOKS" VALUES ('11', '探索宇宙奥秘', '2','4', '苏庆东', '北京大学出版社', TO_DATE('2019-01-03', 'YYYY-MM-DD '), TO_DATE('2019-9-15', 'YYYY-MM-DD'), '6');INSERT INTO "BOOKS" VALUES ('12', '计算机组成原理', '6','4', '王爱英', '清华大学出版社', TO_DATE('2019-01-03', 'YYYY-MM-DD '), TO_DATE('2019-9-15', 'YYYY-MM-DD'), '6'); 5、添加学生表student信息INSERT INTO "STUDENT" VALUES ('S01', '陈特', '男', '信息工程学院');INSERT INTO "STUDENT" VALUES ('S02', '陈远鹏', '男', '经济管理学院');INSERT INTO "STUDENT" VALUES ('S03', '王鹏', '男', '人文学院');INSERT INTO "STUDENT" VALUES ('S04', '赵铭静', '女', '信息工程学院');INSERT INTO "STUDENT" VALUES ('S05', '潘虹', '女', '经济管理学院');INSERT INTO "STUDENT" VALUES ('S06', '李渊', '女', '人文学院');6、添加教师表信息teacher信息INSERT INTO "TEACHER" VALUES ('T01', '蒋伟', '男', '信息工程学院');INSERT INTO "TEACHER" VALUES ('T02', '李叶风', '女', '经济管理学院');INSERT INTO "TEACHER" VALUES ('T03', '张怡', '女', '人文学院');7、将已有图书证的读者加入readers表中INSERT INTO "READERS" VALUES ('01', '陈特', '男', '学生', 'S01','',TO_DATE('2019-11-15', 'YYYY-MM-DD'));INSERT INTO "READERS" VALUES ('02', '陈远鹏', '男', '学生', 'S02','',TO_DATE('2019-09-23', 'YYYY-MM-DD'));INSERT INTO "READERS" VALUES ('03', '赵铭静', '女', '学生', 'S04','', TO_DATE('2019-09-23', 'YYYY-MM-DD'));INSERT INTO "READERS" VALUES ('04', '潘虹', '女', '学生', 'S05','', TO_DATE('2019-09-23', 'YYYY-MM-DD'));INSERT INTO "READERS" VALUES ('05', '蒋伟', '男', '教师', '','T01', TO_DATE('2019-09-23', 'YYYY-MM-DD'));INSERT INTO "READERS" VALUES ('06', '李叶风', '女', '教师', '','T02', TO_DATE('2019-09-23', 'YYYY-MM-DD'));8、添加已借书读者的记录,同时将在已借出的借阅标记置insert into borrow values('03','06',TO_DATE('2019-10-03', 'YYYY-MM-DD '))update booksset isborrowed=isborrowed-1where bookid='03'insert into borrow values('09','04',TO_DATE('2019-10-03', 'YYYY-MM-DD '))update booksset isborrowed=isborrowed-1insert into borrow values('10','05',TO_DATE('2019-10-03', 'YYYY-MM-DD '))update booksset isborrowed=isborrowed-1where bookid='10'insert into borrow values('06','01',TO_DATE('2019-10-03', 'YYYY-MM-DD '))update booksset isborrowed=isborrowed-1where bookid='06'insert into borrow values('07','05',TO_DATE('2019-10-03', 'YYYY-MM-DD '))update booksset isborrowed=isborrowed-1where bookid='06'insert into borrow values('01','06',TO_DATE('2019-10-03', 'YYYY-MM-DD '))update booksset isborrowed=isborrowed-1where bookid='01'9、添加还书读者的记录,同时将在还书的借阅标记置insert into return values('03','06',TO_DATE('2019-11-03', 'YYYY-MM-DD '))update booksset isborrowed=isborrowed+1where bookid='03'insert into return values('09','04',TO_DATE('2019-11-03', 'YYYY-MM-DD '))update booksset isborrowed=isborrowed+1insert into return values('10','05',TO_DATE('2019-11-03', 'YYYY-MM-DD '))update booksset isborrowed=isborrowed+1where bookid='02'10、添加罚款单的记录insert into fee values('01','陈特','06','中华历史5000年','一元',TO_DATE('2019-12-03', 'YYYY-MM-DD'))update booksset isborrowed=isborrowed+1where bookid='06'insert into fee values('05','蒋伟','07','数据结构(C语言版','一元',TO_DATE('2019-12-03', 'YYYY-MM-DD'))update booksset isborrowed=isborrowed+1where bookid='07'11、添加图书挂失信息insert into loss values('06','李叶风','01','计算机组成原理')4.3图书管理系统测试1、书籍类别测试2、图书库测试3、书籍库测试4、管理员测试5、学生表测试6、教师表测试7、借书证表测试8、借书表测试9、还书表测试10、逾期表测试11、挂失表测试12、教师图书借阅视图13、学生图书借阅视图14、图书借阅视图15、图书归还视图16.图书索引select * from user_ind_columns where table_name = upper('books')17.读者索引select * from user_ind_columns where table_name = upper('readers')18.借书索引select * from user_ind_columns where table_name = upper('borrow')19.还书索引select * from user_ind_columns where table_name = upper('return')20.自动更改余量存储过程insert into borrow values('01','06',TO_DATE('2019-10-03', 'YYYY-MM-DD '))21.查询图书余量函数select getBookNum('01') from dual;22.触发器禁止删除图书表数据4.4图书管理系统修改1、修改表空间的大小(alter database datafile 'D:\ORACLE\data\TSGL_TEMP.DBF' resize 5000m;)2、为学生表添加age(年龄)字段(Alter table student add(age varchar(10));)3、为学生表age(年龄)字段添加信息4、为教师表添加age(年龄)字段(Alter table teacher add(age varchar(10));)5、为教师表age(年龄)字段添加信息6、修改学生表字段age大小(Alter table student modify(age varchar(5));)7、修改教师表字段age大小(Alter table teacher modify(age varchar(5));)8、删除学生表的age字段(Alter table student drop column age;)9、删除教师表表的age字段(Alter table teacher drop column age;)10.修改教师借阅视图create or replace view teacher_Viewasselectteacher.teachertid,teacher.teachername,readers.readertype,b orrow.bookid,borrowdatefrom teacher,readers,borrowwhere teacher.teachertid=readers.teachertid and readers.readerid=borrow.readerid11.修改学生借阅视图create or replace view student_Viewasselectstudent.studentid,student.studentname,readers.readertype,bo rrow.bookid,borrowdatefrom student,readers,borrowwhere student.studentid=readers.studentid and readers.readerid=borrow.readerid三、心得体会经过这段时间的Oracle数据库实训,让我学到了很多有用的知识,包括建表,视图。