华南农业大学数据库综合性实验报告.docx

上传人:b****2 文档编号:274208 上传时间:2023-04-28 格式:DOCX 页数:29 大小:214.54KB
下载 相关 举报
华南农业大学数据库综合性实验报告.docx_第1页
第1页 / 共29页
华南农业大学数据库综合性实验报告.docx_第2页
第2页 / 共29页
华南农业大学数据库综合性实验报告.docx_第3页
第3页 / 共29页
华南农业大学数据库综合性实验报告.docx_第4页
第4页 / 共29页
华南农业大学数据库综合性实验报告.docx_第5页
第5页 / 共29页
华南农业大学数据库综合性实验报告.docx_第6页
第6页 / 共29页
华南农业大学数据库综合性实验报告.docx_第7页
第7页 / 共29页
华南农业大学数据库综合性实验报告.docx_第8页
第8页 / 共29页
华南农业大学数据库综合性实验报告.docx_第9页
第9页 / 共29页
华南农业大学数据库综合性实验报告.docx_第10页
第10页 / 共29页
华南农业大学数据库综合性实验报告.docx_第11页
第11页 / 共29页
华南农业大学数据库综合性实验报告.docx_第12页
第12页 / 共29页
华南农业大学数据库综合性实验报告.docx_第13页
第13页 / 共29页
华南农业大学数据库综合性实验报告.docx_第14页
第14页 / 共29页
华南农业大学数据库综合性实验报告.docx_第15页
第15页 / 共29页
华南农业大学数据库综合性实验报告.docx_第16页
第16页 / 共29页
华南农业大学数据库综合性实验报告.docx_第17页
第17页 / 共29页
华南农业大学数据库综合性实验报告.docx_第18页
第18页 / 共29页
华南农业大学数据库综合性实验报告.docx_第19页
第19页 / 共29页
华南农业大学数据库综合性实验报告.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

华南农业大学数据库综合性实验报告.docx

《华南农业大学数据库综合性实验报告.docx》由会员分享,可在线阅读,更多相关《华南农业大学数据库综合性实验报告.docx(29页珍藏版)》请在冰点文库上搜索。

华南农业大学数据库综合性实验报告.docx

华南农业大学数据库综合性实验报告

华南农业大学综合性设计性

实验报告

 

实验名称:

数据库设计

项目性质:

综合性设计性实验

所属课程:

数据库系统概念

开设时间:

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_SALARY

给图书

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

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2