1、摘 要为了更好的巩固和加强书本所学的知识,把所学的东西转化为实际应用。我们学习了数据库应用程序的使用。并应用了SQL语言。对数据库的创建、修改、删除方法有了一定的了解。通过导入表和删除表、更改表学会了对于表的一些操作。为了建立一个关系数据库信息管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程,为毕业设计打下基础。 当人们收集了大量的数据后,应该把它们保存起来进入近一步的处理,进一步的抽取有用的信息。当年人们把数据存放在文件柜中,可现在随着社会的发展,数据量急剧增长,现在人们就借助计算机和数据库技术科学的保存大量的数据,以便能更好的利用这
2、些数据资源。 通过图书馆管理系统的构造以及借书人的信息还有书的相关信息制成表格,输入到数据库中,使之能够进行查询、修改、删除并且与图书馆管理系统执行相同的操作。需求分析阶段就是要研究我所做图书馆管理系统的具体分类和实施过程流图。概念设计阶段要完成数据抽象与局部视图设计还有视图的集成。逻辑结构设计阶段要把E-R图转化为关系模式并且把我输入的五张表结合在一起完成一个总关系表。最后就是要运行和实施数据库。要把查询结果与过程抓几张图关键词:SQL SERVER;数据库设计;图书馆管理系统23目录第一章 绪论31.1课题简介31.2设计目的31.3设计内容3第二章 需求分析42.1 需求分析的任务42.
3、2 需求分析的过程42.3 数据字典与流程图4第三章 概念结构设计83.1 概念结构设计的方法与步骤83.2 数据抽象与局部视图设计83.3视图的集成10第四章 逻辑结构设计114.1 E-R图向关系模型的转换114.2 数据模型的优化114.3 基本表结构11第五章 数据库物理设计145.1 数据库的建立145.2 数据库基本结构的建立145.3安全性的实现.17 5.4 完整性的实现.175.5 恢复技术的实现.18 第六章 运行与结果196.1 简单查询和连接查询196.2 嵌套查询206.3 组合查询和统计查询21总 结23参考文献23第一章 绪论1.1课题简介随着时代的发展,计算系软
4、件和系统的成熟,机票如果简单方面预定成为一个影响多数人生活的问题。而建立机票预定系统是一个很好的解决办法。经过三年的学习,我们对计算机方面的知识有了很大的提升,本着理论联系实际的宗旨,通过学校提供的这次课程设计实践的机会,在指导教师的帮助下,历经两周时间,我自行设计一套图书馆管理系统,在下面的各章中,我将以这套图书馆管理系统信息系统为例,谈谈其开发过程和所涉及到的问题。1.2设计目的应用对数据库系统原理的理论学习,通过上机实践的方式将理论知识与实践更好的结合起来,巩固所学知识。实践和巩固在课堂教学中学习的关于数据库的有关知识,熟练掌握对于给定结构的数据库的创建、基本操作、程序系统的建立和调试以
5、及系统评价。实践和巩固在课堂教学中学习的关于关系数据库原理的有关知识和数据库系统的建立方法,熟练掌握对于给定实际问题,为了建立一个关系数据库信息管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程,为毕业设计打下基础。1.3设计内容选择课题并且对课题的相关信息有一定的了解,对于我选的课题来说,我必须了解图书馆管理系统的构造以及借书人的信息还有书的相关信息。通过这些信息制成表格,输入到数据库中,使之能够进行查询、修改、删除并且与图书馆管理系统执行相同的操作。需求分析阶段就是要研究我所作的图书馆管理系统的具体分类和实施过程流图。概念设计阶段要完
6、成数据抽象与局部视图设计还有视图的集成。逻辑结构设计阶段要把E-R图转化为关系模式并且把我输入的五张表结合在一起完成一个总关系表。最后就是要运行和实施数据库。要把查询结果与过程抓几张图。第二章 需求分析2.1 需求分析的任务调查图书馆管理系统应用领域涉及的内容,对涉及到领域的各个应用的信息要求和操作要求进行详细分析,形成需求分析说明书。最重要的是调查、收集信息、分析借书人信息和借书流程。处理要求、数据的安全性与完整性要求。要求系统能有效、快速、安全、可靠和无误的完成上述操作。并要求客户机的界面要简单明了,易于操作,服务器程序利于维护。2.2 需求分析的过程图书馆为方便管理,需开发一个图书馆管理
7、系统。为便于图书馆管理员的管理,管理员负责借书并且将借书人的信息,包括姓名、性别、工作单位、身份证号码、借书的书号,借书日期,输入图书馆管理系统的客户端程序,系统经过查询图书馆的数据服务器后,为借书者提供服务。并规定什么时间还书超过时间要罚款,还要规定一次只能借几本。要求系统能有效、快速、安全、可靠和无误的完成上述操作。并要求客户机的界面要简单明了,易于操作,服务器程序利于维护。2.3数据字典与流程图1业务流程分析经过可行性分析和初步需求调查,抽象出该系统业务流程图,结合该实例具体情况,给出借书者信息、借书信息需求。图2.1 图书馆管理系统流程图 调查用户需求 图书馆办公需求l 功能:借书者持
8、借书证去图书馆借书。l 统计功能:u 按书号统计数的本书数u 按姓名(身份证号),书名(书号),统计借书书数借书需求l 借还书功能:u 借书u 还书 查询需求l 查询功能:u 查询借书者所借的书是否被借走u 查询书的位置l 统计功能:u 统计书借出多少本u 统计书还剩多少本l 查询功能: 书的信息需求l 查询功能:u 书名u 作者u 著书时间2系统模块分析在调查完了用户需求之后,就要开始分析用户需求。在此,我们采用自顶向下的结构化分析方法(SA方法)。首先,定义全局概念结构的框架,如图2.2所示。 图2.2图书馆管理系统总框架图各子系统需要进一步细化。图书信息系统为例进一步细化,如图2.3所示
9、。图2.3图书信息系统细化以其中的借书者信息功能为例进一步细化,如图2.4所示。图2.4借书者信息系统细化图2.5借书信息系统细化 图2.6书架信息系统 3数据字典将所有子系统全部细化。将所有用户需求分析完毕之后,就要开始构造数据字典了。经分析之后,本系统要用到五个基本表:图书信息表,借书者信息表,借书信息表,书架信息表,书位置信息表。数据结构定义如表2.1所示。表2.1 数据结构定义数据结构名含义说明组成图书信息表定义了图书的有关信息书名,书号,作者,著书时间,剩于多少本借书者信息定义了借书者有关信息借书者姓名,身份证号,性别,工作单位,电话号借书信息表定义了借书的有关信息书号,借书者的身份
10、证号,借书日期书架位置定义了书架相关有关信息书架编号,书架位置,所存书的类型 书位置位息表定义了书座位有关信息书号,书架编号, q第三章 概念结构设计3.1 概念结构设计的方法与步骤3.1.1 概念结构设计的方法概念设计阶段我采用自底向上的方法,即自顶向下的进行需求分析,然后再自底向上的进行概念结构设计。对已经细化到无法再分的阶段逐步集成在一起,最终合成一个全局概念模式。3.1.2 概念结构设计的步骤第一步是进行局部视图的设计:由于高层的数据流图只能反映系统的概貌,而中层流图能较好的反映系统中各局部应用的子系统组成。因此我们先逐一的设计分E-R图。第二步是进行视图的集成:各子系统的E-R图设计
11、好之后,下一步就是要将所有的分E-R图合成一个系统的总E-R图,一般有两个方式,多个分E-R图一次集成,另一种是一次集成两个分E-R图。我想采用一次集成两个分E-R图的方式。3.2 数据抽象与局部视图设计按照图2.2图书馆管理系统总框架图,设计实体属性图以及局部E-R图。图3.1图书实体属性图 图3.2借书者实体属性图 图3.3书架位置实体属性图 图3.3借书关系E-R图 图3.4书的位置关系E-R图3.3视图的集成 经逐步细化再进行每两个一集成初步形成一个E-R图,最后得到图3.4总体概念结构E-R图。借书者与图书是多对多的关系,书架与图书也是多对多的关系,这里不再注释。 图3.4系统总体结
12、构 E-R图 第四章 逻辑结构设计4.1 E-R图向关系模型的转换将图3.4总体概念结构E-R图转化成关系模型。 图书信息表(书号,书名, 作者,著书时间,剩于多少本)借书者信息表(身份证号,姓名,电话号,性别,工作单位) 书架位置信息表(书架编号,位置,所存书类型) 借书信息表(身份证号,书号,借书日期) 图书位置信息表(书号,书架编号)4.2 数据模型的优化将转化的关系模式进行优化,最终达到第三范式。1、确定数据依赖图书信息(书号,书名,作者,著书时间,剩余多少本)根据这个关系写出数据依赖书号书名,书号作者,书号著书时间,书号剩余多少本借书者信息(姓名,身份证号,电话号,性别,工作单位)身
13、份证号姓名,身份证号电话号,身份证号性别,身份证号工作单位 书架位置信息(书架编号,位置,所存书类型)书架号位置,书架号所存书类型借书信息(身份证号,书号,借书日期)(身份证号,书号)借书日期图书位置信息(书号,书架编号)对各关系模式间数据依赖进行极小化处理,消除冗余 书号书名,书号作者,书号著书时间,书号剩余多少本身份证号姓名,身份证号电话号,身份证号性别,身份证号工作单位书架号位置,书架号所存书类型(身份证号,书号)借书日期4.3 基本表结构根据总体结构图设计各表的结构,其相应标的定义如下:表4-1图书信息系统的结构字段名数据类型长度约束描述bnochar6主键书号bnamevarchar
14、15不为空书名authorvarchar15不为空作者bdatedate不为空著书时间leftnosmallint不为空剩余多少本表4-2 借书者信息系统的结构字段名数据类型长度约束描述idchar6主键身份证号jnamevarchar15不为空借书者姓名tnovarchar15不为空电话号sexchar1不为空性别adressVarchar15不为空工作单位表4-3书架信息表系统的结构字段名数据类型长度约束描述shelfnochar6主键书架编号shelfaddchar6不为空位置btypevarchar15不为空所存书的类型表4.4借书信息系统的结构字段名数据类型长度约束描述bnochar
15、6主键书号idchar6主键身份证号jdatedate不为空借书日期表4.5 图书位置信息表字段名数据类型长度约束描述bnochar6主键书号shelfnochar6主键书架号第五章 数据库的实现5.1数据库的建立 Creat database db1 On primary ( name=db1, Filename= E:db1-课程设计数据库db1_data mdf, Size=4MB, Maxsize=10MB, Filegrowth=1MB ) Log on ( name=db1_log, Filename= E:db1-课程设计数据库db1_log.ldf, Size=1MB, Max
16、size=10MB, Filegrowth=1% )5.2 数据库基本结构的建立1、 基本表的建立l Create table 图书 ( Bno char(6) primary key, Bname varchar(15) not null, Author varchar(15) not null, Bdate datetime not null, Leftno smallint not null );l Create table 借书者 ( Id char(6) primary key, Jname varchar(15) not null, Tno varchar(15) not null
17、, Sex char(1) not null, Address varchar(15) not null );l Create table 书架 ( Shelfno char(6) primary key, Shelfadd char(6) not null, Btype varchar(15) not null );l Create table 借书 ( Bno char(6), Id char(6) , Jdate date not null, Primary key (bno,id), Foreign key (bno) references 图书(bno), Foreign key (
18、id) references 借书者(id) );l Create table 图书位置 ( Bno char(6), Shelfno char(6), Primary key (bno,shelfno), Foreign key (bno) references 图书(bno), Foreign key (shelfno) references 书架(shelfno) );2、 添加数据 Insert into 借书者(id,jname,tno,sex,address) Values(000007,元芳,666666,m,大连)3、视图的建立 Create view View_1 As se
19、lect 图书.bno,图书.bname,书架.btype From 图书,图书位置,书架 Where 图书.bno=图书位置.bno and 图书位置.shelfno=书架.shelfno;4、索引的建立 聚簇索引:l Create clusted index index1 on 图书(bno);l Create clusted index index2 on 借书者(jname);l Create clusted index index3 on 书架(shelfno);l Create clusted index index4 on 借书(jdate);l Create clusted i
20、ndex index5 on 图书位置(bno); 唯一索引: Create unique index indexa on 借书者(id) ;5、游标的建立 根据应用要求,为其中一个基本表设计游标,并利用该游标修改数据,写出SQL语句。 例如:在“借书者”表中定义一个所在地为“大连”,包含id,jname,sex的游标名称为 借书者_cursor, 将游标中绝对位置为1的借书者的姓名改为“科比”。Declare 借书者_cursor scroll cursor For Select id, jname,sex From 借书者 Where address=大连For update of jna
21、meOpen 借书者_cursorFetch absolute 1 from 借书者_cursorUpdate 借书者Set jname = 科比 Where current of 借书者_cursorFetch absolute 1 from 借书者_cursor6、存储过程的建立 Create procedure 借书者_address As Select id,jname,bno From 借书者,借书 Where 借书者.id=借书.id5.3安全性的实现1、 利用图形化工具1) 系统用户名:SQL课程设计;SQL SERVER用户名:DELL-PCSQL课程设计;数据库用户名:SQL
22、课程设计user.2) 为SQL SERVER用户,数据库用户分配角色,写出分配的角色名。 为SQL SERVER用户分配的角色名:sysadmin;为数据库分配的角色名:新建角色1.2、利用Transact-SQL1) 设计一个SQL server登录账户,并设置密码,写出相应的SQL语句。 Sp_addlogin DELL-PCSQL课程设计,1234562) 为登录帐户,设计创建一个数据库用户,写出相应的SQL语句。 Sp_grantdbaccess SQL课程设计user,DELL-PCSQL课程设计3) 为数据库用户创建数据库角色,写出相应的SQL语句。 Sp_addrolememb
23、er 新建角色1,SQL课程设计user5.4完整性的实现1、 UNIQUE约束 Alter table 图书 Add constraint unique_bno Unique nonclustered(bno);2、CHECK约束 Alter table 图书 Add constraint check_bno Check (bno000010);3、 DEFAULT约束 Alter table 借书者 Add constraint default_sex Default m for sex;4、 NOT NULL约束 Alter table 借书者 Alter column tno varc
24、har(15) not null;5、规则 创建:Create rule leftno_rule as leftno=0 and leftno=20; 查询:Sp_bindrule leftno_rule,图书.leftno ;5.5恢复技术的实现备份路径及文件:C:Program Files (x86)Microsoft SQServerMSSQL.2MSSQLBackupdb1.bak第六章 运行与结果6.1简单查询和连接查询1、简单查询1) Select * From 图书;2) Select id,jnameFrom 借书者;2、 连接查询1) Select 图书.bno,bname,
25、jdateFrom 图书,借书Where 图书.bno=借书.bno;2) Select bno,bname,shelfnoFrom 图书,图书位置Where 图书.bno=图书位置.bno;6.2嵌套查询1) Select bname,authorFrom 图书Where bno in(Select bnoFrom 借书Where id=000003);2) Select jname,tnoFrom 借书者Where id in (Select id From 借书Where bno=000007);6.3组合查询和统计查询1、组合查询1) Select *From 图书Where auth
26、or=金庸UnionSelect *From 图书Where author=郭敬明; 2) Select *From 借书者Where address=大连UnionSelect *From 借书者Where address=沈阳; 2、统计查询1) Select count(distinct id) as 借书的人数 From 借书; 2) Select id, count(bno) as 每人借的书本数 From 借书 Group by id Order by 1,2 desc; 总 结通过这次的数据库课程设计我学习并掌握了很多知识与操作。历时两个星期的设计令我受益匪浅,也对数据库这门学科
27、有了更进一步的认识与熟悉。 一个好的软件的设计必须有一个好的需求分析。我结合自己的设计理念,设计出了5个表,分别是:图书信息表,借书者信息表,图书位置信息表,书架信息表,借书信息表。在各个表中我添加了若干个属性,而这些属性恰恰是我们最想知道的信息。当创建完这些表和属性后,我开始按照老师给的模板和要求写论文,写论文的过程中温习了用SQL SERVER运行截图,相较于我这是比较难的步骤。我花了很长的时间才弄懂如何使用。我根据老师以前给的实验指导书一步一步的从头到尾开始学习操作应用SQLSERVER。弄懂了SQL SERVER后,我就开始根据老师的要求进行报刊订阅各个操作。另外,我还自学了用visio2007画E-R图和模式图,也有所收获。完成之后,很有成就感,学到了很多,希望以后还可以有这样的课程设计让我进步。由于本人能力不足,难免会使系统出现一些不足之处,但由于限于时间,本系统只能做出其中的一部分功能。希望老师评点批评。参考文献1 刘金岭,冯万利等数据库原理及应用清华大学出版社,200972 刘金岭,冯万利数据库原理及应用实验与课程设计指导清华大学出版社,20106