ORACLE大型数据库技术图书管理系统.docx

上传人:b****3 文档编号:5064119 上传时间:2022-12-12 格式:DOCX 页数:13 大小:50.06KB
下载 相关 举报
ORACLE大型数据库技术图书管理系统.docx_第1页
第1页 / 共13页
ORACLE大型数据库技术图书管理系统.docx_第2页
第2页 / 共13页
ORACLE大型数据库技术图书管理系统.docx_第3页
第3页 / 共13页
ORACLE大型数据库技术图书管理系统.docx_第4页
第4页 / 共13页
ORACLE大型数据库技术图书管理系统.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

ORACLE大型数据库技术图书管理系统.docx

《ORACLE大型数据库技术图书管理系统.docx》由会员分享,可在线阅读,更多相关《ORACLE大型数据库技术图书管理系统.docx(13页珍藏版)》请在冰豆网上搜索。

ORACLE大型数据库技术图书管理系统.docx

ORACLE大型数据库技术图书管理系统

《ORACLE大型数据库技术》

题目:

图书管理系统

学生姓名:

雷丰悦

学号:

专业班级:

计科14101

同组姓名:

指导教师:

设计时间:

指导老师意见:

评定成绩:

签名:

日期:

一、需求分析

读者到图书馆电子查询处查询图书,查找读者需要的图书。

如果有满足读者要求的图书,查看该图书是否存在馆藏,如存在,读者凭借索书号进入馆藏室取书交给管理员,管理员在系统记录读者信息并记录借出图书信息,如果不在馆,则无法提供图书。

1.系统功能实现:

实现图书的查询、借出、归还、交罚款功能。

1)流程图

根据系统功能的需求分析,经过模块化的分析得到如下所示系统功能模块结构图。

读者借阅图书,系统查询图书是否在馆。

图书已借出,显示已借出;未借出显示下一步,图书管理员管理图书,登记读者信息,借出图书。

图1-1借阅图书模块流程图

二、数据库设计

1.概念结构设计:

1)局部ER图

读者—借阅—图书

借阅关系E-R图

2)全局ER图

全局完整E-R图

2.逻辑结构设计:

数据库的逻辑设计过程就是把ER图转化为关系模式的过程。

1)将E-R图转化为关系模式

✧读者(借书证号,姓名,性别,联系电话,系别,违章状况)

✧图书(ISBN,索书号,书名,作者,出版社,出版日期,简介,数量)

✧管理员(工作编号,姓名,性别,电话,工资)

✧借阅(读者编号,ISBN,工作编号,是否续借,借书日期,还书日期)

✧管理员_书籍(工作编号,ISBN,添加时间,是否在馆)

2)设计数据表

读者信息表READER

字段名

数据类型

长度

约束

属性

姓名

VARCHAR

30

NOTNULL

非主属性

性别

CHAR

4

NOTNULL

非主属性

系别

VARCHAR

30

NOTNULL

非主属性

借书证号

VARCHAR

20

NOTNULL

主码

联系电话

CHAR

11

非主属性

违章状况

CHAR

4

非主属性

图书信息表BOOK

字段名

数据类型

长度

约束

属性

ISBN

VARCHAR

30

NOTNULL

主码

索书号

VARCHAR

30

NOTNULL

非主属性

书名

VARCHAR

50

NOTNULL

非主属性

作者

VARCHAR

30

NOTNULL

非主属性

出版社

VARCHAR

50

非主属性

出版日期

DATE

非主属性

简介

VARCHAR

50

非主属性

数量

INT

非主属性

管理员信息表MASTER

字段名

数据类型

长度

约束

属性

工作编号

VARCHAR

20

NOTNULL

主码

姓名

VARCHAR

30

NOTNULL

非主属性

性别

VARCHAR

2

NOTNULL

非主属性

电话

CHAR

11

非主属性

借阅关系表R-B

字段名

数据类型

长度

约束

属性

ISBN

VARCHAR

30

NOTNULL

外码

借书证号

VARCHAR

20

NOTNULL

外码

工作编号

VARCHAR

20

NOTNULL

外码

借书日期

DATE

NOTNULL

非主属性

还书日期

DATE

NOTNULL

非主属性

是否续借

CAHR

4

NOTNULL

非主属性

确认归还

CHAR

4

NOTNULL

非主属性

管理员_书籍表M-B

字段名

数据类型

长度

约束

属性

工作编号

VARCHAR

20

NOTNULL

外码

ISBN

VARCHAR

30

NOTNULL

外码

添加时间

DATE

非主属性

是否在馆

CHAR

4

非主属性

三、创建表空间和用户

CREATETABLESPACETESTDATAFILE'D:

\TEST.ORA'SIZE100M;//创建表空间

DROPTABLESPACETEST;//删除表空间

CREATEUSERTESTIDENTIFIEDBY123456DEFAULTTABLESPACETESTQUOTA100MONUSERS;

//创建用户赋予密码及分配表空间

GRANTALLPRIVILEGESTOTEST;//赋予用户全部权限

四、在表空间中创建表且插入数据

1.创建表

创建读者-READER表:

CREATETABLEREADER

(借书证号VARCHAR(20)PRIMARYKEYNOTNULL,

姓名VARCHAR(30)NOTNULL,

性别CHAR(4)NOTNULL,

系别VARCHAR(30)NOTNULL,

联系电话CHAR(11),

违章状况CHAR(4)

);

杰伦','男','计算机科学与技术否');

张华','男','地理科学否');

蔡依林','女','音乐与艺术否');

李明','男','数学与应用数学否');

那英','女','土木工程否');

哈伦','男','酒店管理否');

罗志祥','男','旅游管理否');

黄渤','男','生物科学否');

唐颖','女','国际经济与贸易否');

雷龙','男','汉语言文学否');

创建管理员-MASTER表:

CREATETABLEMASTER

(工作编号VARCHAR(20)PRIMARYKEYNOTNULL,

姓名VARCHAR(30)NOTNULL,

性别CHAR(4)NOTNULL,

电话CHAR(11)

);

韩东','男

王晓丽','女

杨自鸣','男

冯冰','女

杜南珍','女

蒋华','男

刘翔','男

童诗珊','女

陈诗诗','女

夏蓉','男

创建图书-BOOK表:

CREATETABLEBOOK

(ISBNVARCHAR(30)PRIMARYKEYNOTNULL,

索书号VARCHAR(30)NOTNULL,

书名VARCHAR(50)NOTNULL,

作者VARCHAR(30)NOTNULL,

出版社VARCHAR(50),

出版日期DATE,

简介VARCHAR(50),

数量INT

);

INSERTINTO"TEST"."BOOK"VALUES('978-7-111-21382-6','TP3122626','JAVA编程思想','BRUCEECKEL','机械工业出版社',TO_DATE('2007-08-2100:

00:

00','YYYY-MM-DDHH24:

MI:

SS'),'最好的JAVA学习丛书','5');

INSERTINTO"TEST"."BOOK"VALUES('978-7-121-05414-3','TP3127581','PHP5项目开发实战详解','PHPCHINA','电子工业出版社',TO_DATE('2008-08-0800:

00:

00','YYYY-MM-DDHH24:

MI:

SS'),'PHP项目实战丛书','4');

INSERTINTO"TEST"."BOOK"VALUES('978-7-115-21678-6','TP311426','PHP基础教程','LARRYULLMAN','电子工业出版社',TO_DATE('2010-10-0100:

00:

00','YYYY-MM-DDHH24:

MI:

SS'),'PHP丛书','7');

INSERTINTO"TEST"."BOOK"VALUES('978-7-122-05978-9','TP3137781','PHP从入门到精通','陈超','化学工业出版社',TO_DATE('2009-09-2200:

00:

00','YYYY-MM-DDHH24:

MI:

SS'),'PHP丛书','10');

INSERTINTO"TEST"."BOOK"VALUES('978-7-121-06490-6','TP3137564','C#程序设计教程','刘甫迎,刘光会,王蓉','电子工业出版社',TO_DATE('2008-08-1400:

00:

00','YYYY-MM-DDHH24:

MI:

SS'),'C#丛书','2');

INSERTINTO"TEST"."BOOK"VALUES('978-7-302-17882-8','TP3124567','C#从入门到精通','王小科,吕双','清华大学出版社',TO_DATE('2008-10-0900:

00:

00','YYYY-MM-DDHH24:

MI:

SS'),'C#丛书','3');

INSERTINTO"TEST"."BOOK"VALUES('7-121-03179-5','TN911.73','数字图像处理','胡学龙,许开宇','电子工业出版社',TO_DATE('2006-07-1800:

00:

00','YYYY-MM-DDHH24:

MI:

SS'),'图像处理丛书','5');

INSERTINTO"TEST"."BOOK"VALUES('978-7-300-10800-1','TP3113448','大学音乐鉴赏','李迎春','中国人民大学出版社',TO_DATE('2009-08-1100:

00:

00','YYYY-MM-DDHH24:

MI:

SS'),'音乐丛书','5');

INSERTINTO"TEST"."BOOK"VALUES('7-03-016064-9','F590.7','旅游环境学','颜文洪,张朝枝','科学出版社',TO_DATE('2005-09-2100:

00:

00','YYYY-MM-DDHH24:

MI:

SS'),'旅游丛书','9');

INSERTINTO"TEST"."BOOK"VALUES('7-5338-4487-4','D920.0','法律教程','孙笑侠','浙江教育出版社',TO_DATE('2004-07-2300:

00:

00','YYYY-MM-DDHH24:

MI:

SS'),'法律---中国---高等学校---教材','8');

创建管理员_书籍表M-B表:

CREATETABLEMB

(ISBNVARCHAR(30)NOTNULL,

工作编号VARCHAR(20)NOTNULL,

添加时间DATE,

是否在馆CHAR(4),

PRIMARYKEY(工作编号,ISBN),

FOREIGNKEY(工作编号)REFERENCESMASTER(工作编号),

FOREIGNKEY(ISBN)REFERENCESBOOK(ISBN)

);

韩东','男

王晓丽','女

杨自鸣','男

冯冰','女

杜南珍','女

蒋华','男

刘翔','男

童诗珊','女

陈诗诗','女

夏蓉','男

创建借阅关系表R-B表:

CREATETABLERB

(ISBNVARCHAR(30)NOTNULL,

借书证号VARCHAR(20)NOTNULL,

工作编号VARCHAR(20)NOTNULL,

借书日期DATENOTNULL,

还书日期DATENOTNULL,

是否续借CHAR(4)NOTNULL,

确认归还CHAR(4)NOTNULL,

PRIMARYKEY(ISBN,借书证号,工作编号),

FOREIGNKEY(ISBN)REFERENCESBOOK(ISBN),

FOREIGNKEY(借书证号)REFERENCESREADER(借书证号),

FOREIGNKEY(工作编号)REFERENCESMASTER(工作编号)

);

五、索引

1.建立索引:

CREATEINDEXREADER_NAMEONREADER(姓名);

SELECT*FROMREADERRWHERER."姓名"='杰伦'

六、数据查询和视图

1.数据查询:

1.SELECT*FROMREADER//查询读者信息表

2.SELECT*FROMRBWHERE"工作编号

3.SELECT*FROMRBWHERE借书证号

//查询借书证号为所借的书名

4.SELECTBOOK."书名"FROMRB,BOOKWHERERB."借书证号

5.SELECT*FROMRBWHERE"是否续借"='N'ANDSYSDATE-"借书日期">'30'AND"确认归还"='N';

6.SELECT"出版社",SUM("数量")总本数FROMBOOKGROUPBY"出版社"

//查询图书馆内各出版社各有多少本书

7.SELECT*FROMREADERWHEREREADER."借书证号"IN(SELECT"借书证号"FROMRBWHERE"是否续借"='N'ANDSYSDATE-"借书日期">'30'AND"确认归还"='N')

2.视图:

1.CREATEORREPLACEVIEW欠费学生信息AS

SELECTREADER."借书证号",READER."姓名",READER."性别",READER."系别",

READER."联系电话",TO_CHAR(0.2*TO_NUMBER(SYSDATE-RB."借书日期"),'999.0')欠费

FROMREADER,RB

WHERE"是否续借"='N'ANDSYSDATE-"借书日期">'30'AND"确认归还"='N'

ANDREADER."借书证号"=RB."借书证号"

SELECT*FROM欠费学生信息;

//创建视图查询未按期归还图书的学生信息及欠费情况。

七、存储过程的使用

学生借阅信息删除存储过程

CREATEORREPLACEPROCEDUREP_DELETE(V_IDVARCHAR2)--定义变量ID

IS

BEGIN

DELETEFROMRBWHERE"借书证号"=V_ID;--执行删除操作

COMMIT;

END;

--执行

BEGIN

END;

学生续借书籍存储过程实现续借日期加一个月续借值改为Y

CREATEORREPLACEPROCEDUREP_XJ(V_IDVARCHAR2,XUJIECHAR)--定义变量ID

IS

BEGIN

--DELETEFROMRBWHERE"借书证号"=V_ID;--执行删除操作

UPDATERBSET"是否续借"=XUJIE,"还书日期"="ADD_MONTHS"("还书日期",1)WHERE"借书证号"=V_ID;--执行修改操作

COMMIT;

END;

--执行

BEGIN

P_XJ

END;

--执行完上边后执行

SELECT*FROMRB;

创建函数统计各出版社图书的库存量

--函数

CREATEORREPLACEFUNCTIONGETSCOUNT(IN1INVARCHAR2)RETURNNUMBER

AS

COUNTBOOKNUMNUMBER;

BEGIN

SELECT"数量"INTOCOUNTBOOKNUMFROMBOOKWHERE"出版社"=IN1;

RETURN(COUNTBOOKNUM);

END;

--调用函数

DECLARE

COUNTNUMNUMBER:

=0;

BEGIN

COUNTNUM:

=GETSCOUNT('科学出版社');

DBMS_OUTPUT.PUT('图书馆有“科学版社”书籍总数为:

');

DBMS_OUTPUT.PUT(COUNTNUM);

DBMS_OUTPUT.PUT_LINE('本');

END;

触发器:

对READER表添加触发器实现插入修改数据时输出插入或修改后的记录信息

CREATEORREPLACETRIGGERREADER_ONLOAD

AFTERINSERTORUPDATEONREADER

FOREACHROW

DECLARE

BEGIN

DBMS_OUTPUT.PUT_LINE('借书证号:

'||:

NEW.借书证号);

DBMS_OUTPUT.PUT_LINE('姓名:

'||:

NEW.姓名);

DBMS_OUTPUT.PUT_LINE('性别:

'||:

NEW.性别);

DBMS_OUTPUT.PUT_LINE('系别:

'||:

NEW.系别);

DBMS_OUTPUT.PUT_LINE('联系电话:

'||:

NEW.联系电话);

DBMS_OUTPUT.PUT_LINE('触发器已被执行');

END;

雷丰悦','男','计算机科学与技术否');

八、用户、角色

1.普通将图书信息表的查询权限授给普通读者R1

GRANTSELECTONTABLEBOOKTOR1

2.将借阅关系表RB,管理员_书籍表MB的查询和修改的权限给管理员M1

GRANTUPDATE,SELECTONTABLER-B,M-B,M-STOM1

九、实验心得

本图书管理系统的数据库分析与设计是由我们小组分工合作利用一周的课余时间完成。

实验环境:

Windows7+Navicat11+Oracle11g

通过这本次实验,我们掌握了系统开发的数据库设计的各个步骤以及文档的书写,例如E—R图的绘制,物理结构设计等,并且结合实例提高了数据库代码的编写能力。

此次实验中还有不足之处在触发器的应用还待提高。

总的来说动手实践后的更加深入了解到Oracle数据库的强大和美丽。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 其它考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1