华南农业大学综合性设计性实验报告实验名称:数据库设计项目性质:综合性设计性实验所属课程:数据库系统概念开设时间: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_numvarchar(12)否主键,唯一识别图书书名b_namevarchar(50)存储书名作者authorvarchar2(20)存储作者名出版社pub_namevarchar2(20)存储出版社名数量sumnumber(5)存储图书数量学号s_idvarchar2(25)否存储学号学生姓名s_namevarchar2(20)存储学生姓名学生联系电话s_telvarchar2(20)存储学生联系电话工号a_idvarchar2(25)否存储工号管理员姓名a_namevarchar2(20)存储管理员姓名登陆密码passwordvarchar2(25)存储密码管理员联系电话a_telvarchar2(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(图书):编号字段名称属性说明属性数据类型约束1b_num图书编号,非空,可自动按顺序生成主码varchar2(20)Notnull2b_name书名非主属性varchar2(20)3author作者非主属性varchar2(20)4pub_name出版社非主属性varchar2(20)5sum数量非主属性Number(5)(2)表Student(学生):(3)表Admin(图书管理员):2)联系集关系表:(1)Admin与Book之间的联系:编号字段名称属性说明属性数据类型约束1s_id学号主码varchar2(25)Notnull2s_name学生姓名非主属性varchar2(20)3s_tel联系电话非主属性varchar2(20)编号字段名称属性说明属性数据类型约束1a_id工号主码varchar2(25)Notnull2a_name管理员姓名非主属性varchar2(20)3password登陆密码非主属性varchar2(25)4a_tel管理员联系电话非主属性varchar2(20)编号字段名称属性说明属性数据类型约束1a_id工号主码varchar2(25)Notnull,参照Admin表的主码2b_num书号主码varchar2(20)Notnull,参照Book表的主码3add_date日期主码dateNotnull4add_sum新增数量非主属性Number(5)(2)Reader与Book之间的联系:二、系统功能部分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,编号字段名称属性说明属性数据类型约束1b_num图书编号主码varchar2(20)Notnull,参照Book表的主码2snum学号主码varchar2(25)Notnull,参照Student表的主码3brr_date借出日期主码dateNotnull4re_date归还日期非主属性date5remain未还图书数量非主属性Number(5)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');INSERTINTOSTUDENTVALU