1、ORACLE大型数据库技术图书管理系统ORACLE大型数据库技术题 目: 图书管理系统学生姓名: 雷丰悦学 号: 专业班级: 计科14101同组姓名: 指导教师: 设计时间: 指导老师意见:评定成绩: 签名: 日期:一、 需求分析读者到图书馆电子查询处查询图书,查找读者需要的图书。如果有满足读者要求的图书,查看该图书是否存在馆藏,如存在,读者凭借索书号进入馆藏室取书交给管理员,管理员在系统记录读者信息并记录借出图书信息,如果不在馆,则无法提供图书。1.系统功能实现:实现图书的查询、借出、归还、交罚款功能。1) 流程图根据系统功能的需求分析,经过模块化的分析得到如下所示系统功能模块结构图。读者借
2、阅图书,系统查询图书是否在馆。图书已借出,显示已借出;未借出显示下一步,图书管理员管理图书,登记读者信息,借出图书。图 1-1 借阅图书模块流程图二、 数据库设计 1. 概念结构设计:1) 局部ER图读者借阅图书借阅关系E-R图2) 全局ER图全局完整E-R图2. 逻辑结构设计:数据库的逻辑设计过程就是把ER图转化为关系模式的过程。1)将E-R图转化为关系模式 读者(借书证号,姓名,性别,联系电话,系别,违章状况) 图书(ISBN,索书号,书名,作者,出版社,出版日期,简介,数量) 管理员(工作编号,姓名,性别,电话,工资) 借阅(读者编号,ISBN,工作编号,是否续借,借书日期,还书日期)
3、管理员_书籍(工作编号,ISBN,添加时间,是否在馆)2)设计数据表读者信息表READER字段名数据类型长度约束属性姓名VARCHAR30NOT NULL非主属性性别CHAR4NOT NULL非主属性系别VARCHAR30NOT NULL非主属性借书证号VARCHAR20NOT NULL主码联系电话CHAR11非主属性违章状况CHAR4非主属性图书信息表BOOK字段名数据类型长度约束属性ISBNVARCHAR30NOT NULL主码索书号VARCHAR30NOT NULL非主属性书名VARCHAR50NOT NULL非主属性作者VARCHAR30NOT NULL非主属性出版社VARCHAR50
4、非主属性出版日期DATE非主属性简介VARCHAR50非主属性数量INT非主属性管理员信息表MASTER字段名数据类型长度约束属性工作编号VARCHAR20NOT NULL主码姓名VARCHAR30NOT NULL非主属性性别VARCHAR2NOT NULL非主属性电话CHAR11非主属性借阅关系表R-B字段名数据类型长度约束属性ISBNVARCHAR30NOT NULL外码借书证号VARCHAR20NOT NULL外码工作编号VARCHAR20NOT NULL外码借书日期DATENOT NULL非主属性还书日期DATENOT NULL非主属性是否续借CAHR4NOT NULL非主属性确认归还
5、CHAR4NOT NULL非主属性管理员_书籍表M-B字段名数据类型长度约束属性工作编号VARCHAR20NOT NULL外码ISBNVARCHAR30NOT NULL外码添加时间DATE非主属性是否在馆CHAR4非主属性三、 创建表空间和用户CREATE TABLESPACE TEST DATAFILE D:TEST.ORA SIZE 100M;/创建表空间DROP TABLESPACE TEST; /删除表空间CREATE USER TEST IDENTIFIED BY 123456 DEFAULT TABLESPACE TEST QUOTA 100M ON USERS;/创建用户赋予密码
6、及分配表空间GRANT ALL PRIVILEGES TO TEST; /赋予用户全部权限四、 在表空间中创建表且插入数据1. 创建表创建读者-READER表:CREATE TABLE READER( 借书证号 VARCHAR(20) PRIMARY KEY NOT NULL,姓名 VARCHAR(30) NOT NULL, 性别 CHAR(4) NOT NULL,系别 VARCHAR(30) NOT NULL, 联系电话 CHAR(11), 违章状况 CHAR(4);杰伦, 男, 计算机科学与技术否);张华, 男, 地理科学否);蔡依林,女, 音乐与艺术否);李明,男,数学与应用数学否);那
7、英,女,土木工程否);哈伦,男,酒店管理否);罗志祥,男,旅游管理否);黄渤,男,生物科学否);唐颖,女,国际经济与贸易否);雷龙,男,汉语言文学否);创建管理员-MASTER表:CREATE TABLE MASTER ( 工作编号 VARCHAR(20) PRIMARY KEY NOT NULL, 姓名 VARCHAR(30) NOT NULL, 性别 CHAR(4) NOT NULL, 电话 CHAR(11) );韩东, 男王晓丽, 女杨自鸣, 男冯冰, 女杜南珍, 女蒋华, 男刘翔, 男童诗珊, 女陈诗诗, 女夏蓉, 男创建图书-BOOK表:CREATE TABLE BOOK ( ISB
8、N VARCHAR(30) PRIMARY KEY NOT NULL,索书号 VARCHAR(30) NOT NULL, 书名 VARCHAR(50) NOT NULL, 作者 VARCHAR(30) NOT NULL, 出版社 VARCHAR(50), 出版日期 DATE, 简介 VARCHAR(50),数量 INT );INSERT INTO TEST.BOOK VALUES (978-7-111-21382-6, TP3122626, JAVA编程思想, BRUCE ECKEL, 机械工业出版社, TO_DATE(2007-08-21 00:00:00, YYYY-MM-DD HH24:
9、MI:SS), 最好的JAVA学习丛书, 5);INSERT INTO TEST.BOOK VALUES (978-7-121-05414-3, TP3127581, PHP 5项目开发实战详解, PHPCHINA, 电子工业出版社, TO_DATE(2008-08-08 00:00:00, YYYY-MM-DD HH24:MI:SS), PHP项目实战丛书, 4);INSERT INTO TEST.BOOK VALUES (978-7-115-21678-6, TP311426, PHP基础教程, LARRY ULLMAN, 电子工业出版社, TO_DATE(2010-10-01 00:00
10、:00, YYYY-MM-DD HH24:MI:SS), PHP丛书, 7);INSERT INTO TEST.BOOK VALUES (978-7-122-05978-9, TP3137781, PHP从入门到精通, 陈超, 化学工业出版社, TO_DATE(2009-09-22 00:00:00, YYYY-MM-DD HH24:MI:SS), PHP丛书, 10);INSERT INTO TEST.BOOK VALUES (978-7-121-06490-6, TP3137564, C#程序设计教程, 刘甫迎,刘光会,王蓉, 电子工业出版社, TO_DATE(2008-08-14 00:
11、00:00, YYYY-MM-DD HH24:MI:SS), C#丛书, 2);INSERT INTO TEST.BOOK VALUES (978-7-302-17882-8, TP3124567, C#从入门到精通, 王小科,吕双, 清华大学出版社, TO_DATE(2008-10-09 00:00:00, YYYY-MM-DD HH24:MI:SS), C#丛书, 3);INSERT INTO TEST.BOOK VALUES (7-121-03179-5, TN911.73, 数字图像处理, 胡学龙,许开宇, 电子工业出版社, TO_DATE(2006-07-18 00:00:00, Y
12、YYY-MM-DD HH24:MI:SS), 图像处理丛书, 5);INSERT INTO TEST.BOOK VALUES (978-7-300-10800-1, TP3113448, 大学音乐鉴赏, 李迎春, 中国人民大学出版社, TO_DATE(2009-08-11 00:00:00, YYYY-MM-DD HH24:MI:SS), 音乐丛书, 5);INSERT INTO TEST.BOOK VALUES (7-03-016064-9, F590.7, 旅游环境学, 颜文洪,张朝枝, 科学出版社, TO_DATE(2005-09-21 00:00:00, YYYY-MM-DD HH24
13、:MI:SS), 旅游丛书, 9);INSERT INTO TEST.BOOK VALUES (7-5338-4487-4, D920.0, 法律教程, 孙笑侠, 浙江教育出版社, TO_DATE(2004-07-23 00:00:00, YYYY-MM-DD HH24:MI:SS), 法律-中国-高等学校-教材, 8);创建管理员_书籍表M-B表:CREATE TABLE MB( ISBN VARCHAR(30) NOT NULL,工作编号 VARCHAR(20) NOT NULL,添加时间 DATE,是否在馆 CHAR(4),PRIMARY KEY(工作编号,ISBN),FOREIGN K
14、EY(工作编号)REFERENCES MASTER(工作编号),FOREIGN KEY(ISBN)REFERENCES BOOK(ISBN);韩东, 男王晓丽, 女杨自鸣, 男冯冰, 女杜南珍, 女蒋华, 男刘翔, 男童诗珊, 女陈诗诗, 女夏蓉, 男创建借阅关系表R-B表:CREATE TABLE RB( ISBN VARCHAR(30) NOT NULL, 借书证号 VARCHAR(20) NOT NULL,工作编号 VARCHAR(20) NOT NULL, 借书日期 DATE NOT NULL, 还书日期 DATE NOT NULL, 是否续借 CHAR(4) NOT NULL,确认归
15、还 CHAR(4) NOT NULL,PRIMARY KEY(ISBN,借书证号,工作编号),FOREIGN KEY(ISBN) REFERENCES BOOK(ISBN),FOREIGN KEY(借书证号)REFERENCES READER(借书证号),FOREIGN KEY(工作编号)REFERENCES MASTER(工作编号);五、 索引 1. 建立索引: CREATE INDEX READER_NAME ON READER(姓名);SELECT * FROM READER R WHERE R.姓名 = 杰伦六、 数据查询和视图 1.数据查询:1. SELECT * FROM READ
16、ER /查询读者信息表2. SELECT * FROM RB WHERE 工作编号3. SELECT * FROM RB WHERE 借书证号/查询借书证号为所借的书名4. SELECT BOOK.书名 FROM RB,BOOK WHERE RB.借书证号5. SELECT * FROM RB WHERE 是否续借=N AND SYSDATE-借书日期30 AND 确认归还=N;6. SELECT 出版社,SUM(数量) 总本数 FROM BOOK GROUP BY 出版社/查询图书馆内各出版社 各有多少本书7. SELECT * FROM READER WHERE READER.借书证号 I
17、N(SELECT 借书证号 FROM RB WHERE 是否续借=N AND SYSDATE-借书日期30 AND 确认归还=N )2.视图:1. CREATE OR REPLACE VIEW 欠费学生信息 ASSELECT READER.借书证号,READER.姓名,READER.性别,READER.系别,READER.联系电话,TO_CHAR(0.2*TO_NUMBER(SYSDATE-RB.借书日期),999.0) 欠费 FROM READER,RB WHERE 是否续借=N AND SYSDATE-借书日期30 AND 确认归还=N AND READER.借书证号=RB.借书证号SEL
18、ECT * FROM 欠费学生信息;/创建视图查询未按期归还图书的学生信息及欠费情况。 七、 存储过程的使用 学生借阅信息删除 存储过程CREATE OR REPLACE PROCEDURE P_DELETE(V_ID VARCHAR2)-定义变量IDISBEGINDELETE FROM RB WHERE 借书证号=V_ID; -执行删除操作COMMIT;END;-执行BEGINEND;学生续借书籍 存储过程 实现续借日期加一个月 续借值改为YCREATE OR REPLACE PROCEDURE P_XJ(V_ID VARCHAR2,XUJIE CHAR)-定义变量IDISBEGIN-DEL
19、ETE FROM RB WHERE 借书证号=V_ID; -执行删除操作UPDATE RB SET 是否续借=XUJIE,还书日期 = ADD_MONTHS( 还书日期, 1) WHERE 借书证号=V_ID;-执行修改操作COMMIT;END;-执行BEGINP_XJEND;-执行完上边后执行SELECT * FROM RB;创建函数统计各出版社图书的库存量-函数CREATE OR REPLACE FUNCTION GETSCOUNT(IN1 IN VARCHAR2) RETURN NUMBER AS COUNTBOOKNUM NUMBER; BEGIN SELECT 数量 INTO COU
20、NTBOOKNUM FROM BOOK WHERE 出版社 = IN1; RETURN(COUNTBOOKNUM); END;-调用函数 DECLARE COUNTNUM NUMBER:=0; BEGIN COUNTNUM:=GETSCOUNT(科学出版社); DBMS_OUTPUT.PUT(图书馆有 “科学版社” 书籍总数为:); DBMS_OUTPUT.PUT(COUNTNUM); DBMS_OUTPUT.PUT_LINE( 本); END;触发器:对READER表添加触发器 实现插入修改数据时 输出插入或修改后的记录信息CREATE OR REPLACE TRIGGER READER_O
21、NLOAD AFTER INSERT OR UPDATE ON READER FOR EACH ROW 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; 雷丰悦, 男, 计
22、算机科学与技术否);八、 用户、角色1. 普通将图书信息表的查询权限授给普通读者R1GRANT SELECT ON TABLE BOOK TO R12. 将借阅关系表RB,管理员_书籍表MB的查询和修改的权限给管理员M1GRANT UPDATE,SELECT ON TABLE R-B,M-B,M-S TO M1九、 实验心得本图书管理系统的数据库分析与设计是由我们小组分工合作利用一周的课余时间完成。实验环境:Windows 7 + Navicat11 + Oracle 11g通过这本次实验,我们掌握了系统开发的数据库设计的各个步骤以及文档的书写,例如ER图的绘制,物理结构设计等,并且结合实例提高了数据库代码的编写能力。此次实验中还有不足之处在触发器的应用还待提高。总的来说动手实践后的更加深入了解到Oracle数据库的强大和美丽。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1