完整word版华南农业大学数据库综合性实验报告.docx
- 文档编号:28913585
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:29
- 大小:214.35KB
完整word版华南农业大学数据库综合性实验报告.docx
《完整word版华南农业大学数据库综合性实验报告.docx》由会员分享,可在线阅读,更多相关《完整word版华南农业大学数据库综合性实验报告.docx(29页珍藏版)》请在冰豆网上搜索。
完整word版华南农业大学数据库综合性实验报告
华南农业大学综合性设计性
实验报告
实验名称:
数据库设计
项目性质:
综合性设计性实验
所属课程:
数据库系统概念
开设时间:
2015-2016学年第1学期
学生班级:
软件工程2班
指导教师:
2015年12月12日
华南农业大学数学与信息学院
综合性、设计性实验成绩单
开设时间:
2015-2016学第一学期
学号
姓名
成绩
题目
图书管理系统数据库
自我评价
通过对本图书管理系统数据库的模拟设计,我大体上了解的数据库设计的基础要素。
这次实验以数据库为基础,运用课堂上的理论知识,对数据库进行全面的梳理,包裹实体关系模型、函数依赖、1范式、2范式、3范式和BC范式、约束条件等等在数据库中的必要基础。
从开始的需求分析、概念结构设计、逻辑结构设计、物理结构设计。
亲身体验了一回系统的设计过程。
很多东西书上写的很清楚,貌似看着也很简单,思路非常清晰。
但真正需要自己想办法去设计一个系统的时候才发现其中的难度。
经常做到后面突然就发现自己一开始的设计有问题,然后又回去翻工,在各种反复过程中中不断完善自己的想法,受益匪浅。
教师评语
评价指标:
●按时完成情况优□良□中□差□
●数据库设计水平优□良□中□差□
●SQL查询设计优□良□中□差□
●完整性设计优□良□中□差□
●报告结构清晰优□良□中□差□
●总结和分析详尽优□良□中□差□
其它
评价
教师签名
一、设计部分
1.需求分析
1.1用户需求概述
本系统为图书管理系统数据库,该系统开发的主要目的是对大学图书馆的图书信息进行记录统计管理。
具体完成录入图书信息,录入借还书记录,录入读者信息等功能。
需要完成的主要功能有:
1)学生信息录入
该功能供图书馆管理员使用,学生首次借阅图书前,必须登记并录入个人身份信息,内容包括:
学号、姓名、联系电话。
2)图书信息录入
该功能供图书馆管理员使用,对于首次入库的新书,必须录入图书目录资料,内容包括:
图书编号、书名、作者、出版社、简介。
3)借书记录录入
该功能供图书馆管理员使用,读者凭校园卡到柜台办理借书手续,由图书馆管理人员录入借书记录,内容包括:
日期、学号、图书编号。
对读者借阅图书的限制条件包括:
①读者一次可借阅1-3本图书,
②借出未还的图书,累计不得超出5本;
③没有逾期未归还的图书,从借出之日开始计算,超过90天尚未归还则视为逾期。
4)还书记录录入
该功能供图书馆管理员使用,读者凭校园卡到柜台办理归还借书手续,由图书馆管理人员录入还书记录,内容包括:
日期、学号、图书编号。
学生可以一次归还1至多册所借阅的图书。
5)图书信息查询
该功能供学生使用,学生自行输入书名、作者、出版社等信息作为查询条件,系统列出满足查询条件的图书目录。
6)学生信息查询
该功能供图书馆管理人员使用,操作人员输入学生学号,系统列出该学生的个人信息、以及历次的借阅/归还图书记录。
1.2数据需求
列名(数据项)
变量名
数据类型与长度
空否
说明
图书编号
b_num
varchar(12)
否
主键,唯一识别图书
书名
b_name
varchar(50)
存储书名
作者
author
varchar2(20)
存储作者名
出版社
pub_name
varchar2(20)
存储出版社名
数量
sum
number(5)
存储图书数量
学号
s_id
varchar2(25)
否
存储学号
学生姓名
s_name
varchar2(20)
存储学生姓名
学生联系电话
s_tel
varchar2(20)
存储学生联系电话
工号
a_id
varchar2(25)
否
存储工号
管理员姓名
a_name
varchar2(20)
存储管理员姓名
登陆密码
password
varchar2(25)
存储密码
管理员联系电话
a_tel
varchar2(20)
存储管理员联系电话
2.概念设计内容
2.1概念设计综述
以下用3个实体集和2个联系集实现图书管理系统的E-R图。
2.2概念模型
完整的E-R图:
3.数据库逻辑设计
3.1逻辑设计综述
1)对关系表的设计进行规范化
(1)范式的判断条件:
第一范式:
如果一个关系模式R的所有属性域都是原子的,我们称关系模式R属于第一范式;
第二范式:
若关系模式R满足第一范式,且每一个非主属性完全函数依赖于码,则关系模式R满足第二范式;
BC范式:
对于R中所有的函数依赖,下面至少有一个成立(α—>β是平凡的,α是模式R的一个超码);
第三范式:
在BC范式的判断条件上加多一个条件:
β-α中每个属性A都包含在R的一个候选码中。
(2)本关系模型的判断:
①对于我设计的关系模式中所有实体集和关系集,每一个属性的属性域都是不可再分的,都具有原子性,因此由该关系模式转换而来的关系模型符合第一范式的要求。
②对于由关系模式中的联系集转换而来的关系模型,因为它们的属性都是参加关系的实体集的主码,都完全依赖于对应关系集的主码且都是非平凡的函数依赖,因此这些关系模型满足2NF,3NF,BCNF;
③对于由关系模式中的实体集转换而来的关系模型,其判断如下:
对于关系模式的每一个非主属性完全函数依赖于对应实体集的主码且都是非平凡的函数依赖,因此这四个关系模式满足2范式,3范式和BC范式;
2)E-R图包含3个实体和2个联系,最后可以转换成5个关系表:
(1)实体集关系表:
Book=(b_num,b_name,author,pub_name,sum)
图书=图书编号+书名+作者+出版社+数量
Student=(s_id,s_name,s_tel)
学生=学号+姓名+联系电话
Admin=(a_id,a_name,password,a_tel)
图书管理员=工号+姓名+登陆密码+电话
(2)联系集关系表:
Admin与Book之间的联系:
AddBooks=(a_id,b_num,add_date,add_sum,)
图书信息录入=工号+书号+日期+新增数量
Reader与Book之间的联系:
ReadBooks=(b_num,s_id,brr_date,re_date,remain)
借阅图书=图书编号+学号+借出日期+归还日期+未还图书数量
3.2关系模型
1)实体集关系表:
(1)表Book(图书):
编号
字段名称
属性说明
属性
数据类型
约束
1
b_num
图书编号,非空,可自动按顺序生成
主码
varchar2(20)
Notnull
2
b_name
书名
非主属性
varchar2(20)
3
author
作者
非主属性
varchar2(20)
4
pub_name
出版社
非主属性
varchar2(20)
5
sum
数量
非主属性
Number(5)
(2)表Student(学生):
编号
字段名称
属性说明
属性
数据类型
约束
1
s_id
学号
主码
varchar2(25)
Notnull
2
s_name
学生姓名
非主属性
varchar2(20)
3
s_tel
联系电话
非主属性
varchar2(20)
(3)表Admin(图书管理员):
编号
字段名称
属性说明
属性
数据类型
约束
1
a_id
工号
主码
varchar2(25)
Notnull
2
a_name
管理员姓名
非主属性
varchar2(20)
3
password
登陆密码
非主属性
varchar2(25)
4
a_tel
管理员联系电话
非主属性
varchar2(20)
2)联系集关系表:
(1)Admin与Book之间的联系:
编号
字段名称
属性说明
属性
数据类型
约束
1
a_id
工号
主码
varchar2(25)
Notnull,参照Admin表的主码
2
b_num
书号
主码
varchar2(20)
Notnull,参照Book表的主码
3
add_date
日期
主码
date
Notnull
4
add_sum
新增数量
非主属性
Number(5)
(2)Reader与Book之间的联系:
编号
字段名称
属性说明
属性
数据类型
约束
1
b_num
图书编号
主码
varchar2(20)
Notnull,参照Book表的主码
2
snum
学号
主码
varchar2(25)
Notnull,参照Student表的主码
3
brr_date
借出日期
主码
date
Notnull
4
re_date
归还日期
非主属性
date
5
remain
未还图书数量
非主属性
Number(5)
二、系统功能部分
1.建表
1)数据库中所有关系模式的建表SQL语句:
createtableBook
(
b_numvarchar2(20)notnull,
s_namevarchar2(20)null,
authorvarchar2(20)null,
pub_namevarchar2(20)null,
sumNumber(5)default0check(sum>=0),
constraintpk_bprimarykey(b_num)
);
createtableStudent
(
s_idvarchar2(25)notnull,
s_namevarchar2(20)null,
s_telvarchar2(20)null,
constraintpk_rprimarykey(s_id)
);
createtableAdmin
(
a_idvarchar2(25)notnull,
a_namevarchar2(20)null,
passwordvarchar2(25)default'123456',
a_telvarchar2(20)null,
constraintpk_aprimarykey(a_id)
);
createtableAddBooks
(
a_idvarchar2(25)notnull,
b_numvarchar2(20)notnull,
add_datedatedefaultsysdate,
add_sumNumber(5)default0check(add_sum>=0),
constraintpk_abprimarykey(a_id,b_num,add_date),
constraintfk_abaforeignkey(a_id)referencesAdmin(a_id),
constraintfk_abbforeignkey(b_num)referencesBook(b_num)
);
createtableReadBooks
(
b_numvarchar2(20)notnull,
s_idvarchar2(25)notnull,
brr_datedatedefaultsysdate,
re_datedatenull,
remainNumber(5)check(remain>=0),
constraintpk_rbprimarykey(b_num,s_id,brr_date),
constraintfk_rbrforeignkey(s_id)referencesReader(s_id),
constraintfk_rbbforeignkey(b_num)referencesBook(b_num)
);
2)显示当前用户的所有表:
SELECTobject_nameFROMuser_objectsWHEREobject_type='TABLE';
执行结果:
2.修改表记录
2.1增加
INSERTINTOBOOKVALUES(‘A10000’,'C语言','苏菲','哈哈呵呵出版社',5);
INSERTINTOBOOKVALUES(‘A10001’,'数据库','玛索','哈哈呵呵出版社',5);
INSERTINTOBOOKVALUES(‘B10000’,'大学语文','刘德华','人民教育出版社',5);
INSERTINTOBOOKVALUES(‘C10000’,'自然与科学','王大陆','清华大学出版社',5);
INSERTINTOBOOKVALUES(‘C10001’,'十万个为什么','陶敏敏','清华大学出版社',5);
INSERTINTOSTUDENTVALUES('201330330201','张三','110');
INSERTINTOSTUDENTVALUES('201330330202','李四','11010');
INSERTINTOSTUDENTVALUES('201330330203','王五','10086');
INSERTINTOSTUDENTVALUES('201330330204','欧阳','119');
INSERTINTOSTUDENTVALUES('201330330205','非凡','110');
INSERTINTOADMINVALUES('201330330301','徐太宇','123456','120');
INSERTINTOADMINVALUES('201330330302','林真心','123456','114');
INSERTINTOADMINVALUES('201330330303','范冰冰','123456','12306');
INSERTINTOADMINVALUES('201330330304','周迅','123456','360');
INSERTINTOADMINVALUES('201330330305','李冰冰','123456','361');
INSERTINTOADDBOOKSVALUES('201330330301','A10000','15-12月-10',5);
INSERTINTOADDBOOKSVALUES('201330330302','A10001','15-12月-10',5);
INSERTINTOADDBOOKSVALUES('201330330303','B10000','15-12月-10',5);
INSERTINTOADDBOOKSVALUES('201330330204','C10000','15-12月-10',5);
INSERTINTOREADBOOKSVALUES('A10000','201330330201','15-12月-10','15-12月-10',4);
INSERTINTOREADBOOKSVALUES('A10001','201330330202','15-12月-10','15-12月-10',4);
INSERTINTOREADBOOKSVALUES('B10000','201330330203','15-12月-10','15-12月-10',4);
INSERTINTOREADBOOKSVALUES('C10000','201330330204','15-12月-10','15-12月-10',4);
2.2修改
1)修改编号为A10001的图书出版社:
UPDATEBOOK
SETpub_name='呵呵哈哈出版社'
WHEREb_num=A10001;
2)修改学号为201330330205学生的联系电话:
UPDATESTUDENT
SETs_tel='112'
WHEREs_id=201330330205;
3)修改工号为201330330305管理员的密码:
UPDATEADMIN
SETpassword=a_id
WHEREa_id=201330330305;
4)根据其他表修改数据:
UPDATEBOOK
SET(sum)=sum+(SELECTadd_sumFROMaddbooks)
WHEREbook.b_num=addbooks.b_num;
2.3删除
1)删除学号为201330330205的学生:
DELETEFROMstudentWHEREs_id=201330330205;
2)删除工号为201330330305的管理员:
DELETEFROMadminWHEREa_id=201330330305;
3)删除图书编号为C10001的图书:
DELETEFROMbookWHEREb_num=C10001;
3.视图
1)创建图书作者视图:
CREATEVIEWbook_author(book,author)
ASSELECTb_name,authorFROMbook;
查询视图:
SELECT*FROMbook_author;
执行结果:
2)修改作者视图,加入出版社名称。
CREATEORREPLACEVIEWbook_author(name,author,pub_com)
ASSELECTb_name,author,pub_nameFROMbook,addbooks
WHEREbook.pub_name=addbooks.pub_name;
查询视图:
SELECT*FROMbook_author;
执行结果:
3)创建清华大学出版社的图书视图:
CREATEVIEWtsinghua_book
ASSELECTb_name,authorFROMbookWHEREpub_name='清华大学出版社';
查询视图:
SELECT*FROMtsinghua_book;
执行结果:
4)创建Book表的一个统计视图
CREATEVIEWstatistics(avg_sum)
ASSELECTAVG(SUM)FROMBOOK
查询统计表:
SELECT*FROMstatistics;
执行结果:
4.查询
1)基本查询
分别执行以下语句:
select*fromBook;
select*fromStudent;
select*fromAdmin;
select*fromAddBooks;
select*fromReadBooks;
执行结果:
BOOK:
STUDENT:
ADMIN:
ADDBOOKS:
READBOOKS:
2)多表联合查询:
(1)显示图书书名以及借该图书学生的学号和借书日期:
SELECTbook.b_name,readbooks.s_id,readbooks.brr_dateFROMbook,readbooks
WHEREbook.b_num=readbooks.b_num;
执行结果:
(2)显示图书书名录入借该图书信息的管理员工号和录入日期:
SELECTbook.b_name,addbooks.a_id,addbooks.add_dateFROMbook,addbooks
WHEREbook.b_num=addbooks.b_num;
执行结果:
(3)显示图书编号及录入借该图书信息的管理员姓名和密码:
SELECTaddbooks.b_num,admin.a_id,admin_passwordFROMbook,addbooks
WHEREaddbooks.a_id=admin.a_id;
执行结果:
3)多条件组合查询:
(1)显示哈哈呵呵出版社和呵呵哈哈出版社图书数量大于1的图书信息:
SELECT*FROMbookWHERE(pub_name='哈哈呵呵出版社'ORpub_name='呵呵哈哈出版社')ANDsum>1;
执行结果:
(2)显示学生201330330203和201330330204在15年12月10日所借图书的编号和未还图书数量:
SELECT*FROMreadbooks
WHERE(s_id='201330330203'ORs_id='201330330204')ANDbrr_date=15-12月-10
执行结果:
(3)显示工号201330330303和201330330304在15年12月10日所录入图书的编号和添加数量:
SELECT*FROMreadbooks
WHERE(s_id='201330330203'ORs_id='201330330204')ANDbrr_date=15-12月-10
执行结果:
5.存储过程
(1)存储过程:
BOOK_LIST
显示图书信息并统计出共有多少种图书:
CREATEORREPLACEPROCEDUREBOOK_COUNT
AS
V_TOTALNUMBER(10);
BEGIN
SELECTCOUNT(*)INTOV_TOTALFROMBOOK;
DBMS_OUTPUT.PUT_LINE('图书种类总数为:
'||V_TOTAL);
END;
CREATEORREPLACEPROCEDUREBOOK_LIST
AS
CURSORbook_cursorIS
SELECTb_num,b_nameFROMbook;
BEGIN
FORbook_recordINbook_cursorLOOP
DBMS_OUTPUT.PUT_LINE(book_record.b_num||book_record.b_name);
ENDLOOP;
DEPT_COUNT;--调用存储过程
END;
执行语句:
EXECUTEBOOK_LIST;
显示结果:
(2)存储过程:
CHANGE_SALAR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 word 华南 农业大学 数据库 综合性 实验 报告