一、课程设计的内容
一个图书借阅管理数据库要求提供以下服务:
(1)可随时查询书库中现有书籍的种类、数量与存放位置。所有各类书籍均可由书号唯一标识。
(2)可随时查询书籍借还情况。包括借书人单位、姓名、借书证号、借书日期和还书日期。任何人可借多种书,任何一种书可为多个人所借,借书证号具有唯一性。
(3)当需要时,可通过数据库中保存的出版社电话、邮编及地址等信息向有关书籍的出版社增购有关书籍。一个出版社可出版多种书籍,同一本书仅为一个出版社出版,出版社名具有唯一性。
根据以上的情景假设,进行如下的分析与设计: (1)根据上述语义画出ER 图。
(2)将ER 模型转换成关系模型,并指出每个关系模式的主关键字。
(3)分析每个关系模式已经达到第几范式。对于不符合第三范式要求的关系模式进行规范化。
(4)根据概念模型设计逻辑模型和保护设计。 (5)在SQLServer 中实现。
二、课程设计的要求与数据
根据教师给定的选题,运用课堂中学到的数据库的基本理论与设计的知识,完成数据库概念设计、逻辑设计及部分物理设计的内容。重点是ER 图的设计、关系模式的转换与规范化以及如何利用DBMS 完成数据表及数据库的创建和操作。具体要求包括:
1.开发环境要求:SQL Server 2005 2.提交课程设计报告一份,包括以下内容:
① 用户需求:要解决的主要问题,达到的具体指标等。
② 业务流程分析:描述系统的业务流程,画出规范的业务流程图。 ③ 数据库概念模式设计
写出由基本项相应得出的实体、联系及其属性,并确定主实体的标识特征,画出ERD ;对其中复杂的多元联系进行分析,必要则改进。
④ 数据库逻辑模式设计
4.1 一般逻辑模型设计:写出由ERD 导出一般关系模型的四条原则,列出数据库初步构思的关系框架,并检查改进之。
4.2 具体逻辑模型设计:按所用的DBMS 要求,设计表(文件)的具体结构,在关系框架下补充字段类型、长度、小数位数等行。
⑤ 数据库保护设计
5.1 设计表间关系:列出数据库表间的关联关系。
5.2 完整性设计:列出主要字段完整性的字段名、完整性约束条件;列出记录完整性约束及其约束条件;列出参照完整性表。 ⑥ 数据库系统的实现
6.1 数据库及其表结构的建立:建立数据库描述文件及建立其数据库表,注意完整性与关联的实现,并附作为命令执行结果的数据库表结构及其关联图、参照完整性表。
6.2 数据输入:录入数据,并打印出各表的内容,要求每个表至少有15条记录。 3.提交光盘(每班统一制作1张光盘,每人一个文件夹,文件夹名为“学号姓名”)。每人的光盘文件夹内含:
① 任务书;
② 数据库文件(包括数据文件和日志文件); ③ 课程设计报告电子文档。
三、课程设计应完成的工作
1要求完成一个系统设计的主要过程:需求分析、系统分析、系统设计、系统实现等过程。
2 完成设计后,要写出设计报告。
四、课程设计进程安排
1、概述............................................................. 4
1.1系统的基本任务............................................... 5 1.2系统的主要业务............................................... 5 1.3系统的开发目标............................................... 5 2、需求分析......................................................... 6
2.1用户需求..................................................... 6 2.2数据需求..................................................... 7 2.3 需求规定 .................................................... 8 2.4业务流程分析................................................. 9 2.5系统功能分析................................................ 12
2.5.1功能分析 .............................................. 12 2.5.2功能分析图 ............................................ 13
3、数据库概念(模型)设计.......................................... 14
3.1 由基本项构思ERD 的三个原则 ................................. 14 3.2绘制ER 图................................................... 17 4、数据库逻辑(模型)设计.......................................... 19
4.1 按四原则转化 ............................................... 19 4.2 转化的逻辑模型 ............................................. 20 4.3 逻辑模型的优化 ............................................. 21 4.4 具体逻辑模型设计 ........................................... 21 5、数据库物理设计与数据库保护设计.................................. 23
5.1设计索引.................................................... 23 5.2设计表间关系................................................ 24 5.3完整性设计.................................................. 24 5.4数据库保护设计.............................................. 24 6、数据库实现...................................................... 26
6.1建立数据库.................................................. 26 6.2 建立数据表 ................................................. 27 6.3简单查询.................................................... 33 6.4存储过程.................................................... 35 6.5建立视图.................................................... 37 7、总结与体会...................................................... 41
1、概述
图书馆信息管理系统是一种在学校中常用的一种系统。它从图书的入库登记到查询浏览,从读者的管理到图书的借阅,形成了一个整体自动化管理模式。系统主要有三个方面的内容:一方面是图书管理,主要包括新书入库 图书整理 图书信息的修改等方面。一方面是图书借阅,主要包括图书的借阅和归还。第三方面是信息查询,主要包括图书目录查询 读者信息查询等。随着社会信息量的与日俱增,作为信息存储的主要媒体之一图书,数量、规模比以往任何时候都大的多,不论个人还是图书管理部门都需要使用方便而有效的方式来管理自己的书籍。《图书馆管理系统》能够高效的完成图书管理员的基本业务需求和系统管理员的管理需求,并能根据需要,完成读者所提出的需求。是图书馆日常管理不可或缺的管理系统。
《图书管理系统》主要功能描述1.1系统的基本任务
图书的使用对象是借阅者,例如学生,教师;管理者是图书馆的管理员。因此根据这些信息,本系统的主要功能就是:实现图书馆图书信息的管理和维护,如用户信息管理,图书馆规则维护,新书入库,整理图书,修改图书信息和进行查询等;以及服务系统的图书信息查询,图书的借出和归还等功能图书信息管理系统能够为用户提供充足的信息和快捷的查询手段. 例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。因此要提供真实的、详细的、全面的、系统化的图书管理。为读者借书及管理员的管理提供方便。
1.2系统的主要业务
一是:借书人借书。借书人可以通过本系统,快速而且方便地查询到自己所要找的书,很方便快捷;二是:图书馆的日常管理。图书馆通过本系统, 可以掌握整个图书馆的所有书籍和的全部信息与借书人的借书情况,为图书馆的日常管理提供全面、有用并且有序的信息,方便了图书馆的管理,提高了图书馆的管理效率。
1.3系统的开发目标
通过建立一个较为全面系统化的图书馆管理系统,为借书人借书提供便利,同时也为图书馆的正常有序管理提供方便。大学图书馆管理信息系统为广大大学师生提供了便利的图书借阅服务。本系统面向全体教职职工与学生,该系统根据不同的操作者,提供不同的服务,以实现图书管理系统的科学化、系统化、自动化,最大限度地为老师和学生提供方便和提供管理效率。
2、需求分析
2.1用户需求
我们总可以看到图书馆里,书籍琳琅满目,很多,而且图书的种类也多种多样。这就给图书馆的管理带来很多麻烦,也是借书人非常头痛的问题。
从借书人的角度来说,当到书山书海中,找一本书就像大海捞针一样。这样不仅费时又费神,而且还不一定能找得到,去图书馆不是去看书,而是大部分去找书。所以把书籍分门别类,按一定的分类,按一定顺序编排出来,对借书人来说是很有用处,很有必要的。
从图书馆的角度来说,图书馆里的书多人杂。一个方便全面的系统是必须的,这个系统可以用来管理书籍也可以用来管理借还书业务,而是图书馆的管理有条有理。
图书馆配置一些检索器,把书籍的资料都整理在里面,包括书号、书名、数量,借还状况等等,可供借书人检查,方便借书人知道有什么书以及书的位置,数量,可否借等等情况。然后在系统里面也会登记每个借书人的借书状况。
系统需具备以下功能:查询功能、增加功能、删除功能、修改功能。
图书馆管理信息系统功能模块
2.2数据需求
图书目录,包括图书编号、图书名称、作者名称、出版社、出版日期、图书编号、图书单价、图书类别等。
读者明细,包括读者编号、读者名称、性别、单位地址、所在城市、所在地区、邮政编码、电话号码、传真号码、公司主页、备注信息等。
借阅情况,包括图书编号、图书名称、出版社、读者名称、读者编号、结束日期、还书日期等。
借阅状态,包括图书编号、图书名称、作者名称、出版社、出版日期、图书编号、单价、图书类别、状态信息等。
系统中用到的数据表:
书籍表:
借书人表: 借书表:
出版社表:
2.3 需求规定
在图书管理系统中,管理员要为每个读者建立借阅账户,并給读者发放不同类别的借阅卡(借阅卡可提供卡号、读者姓名),账户内存储读者的个人信息和借阅记录信息。持有借阅卡的读者可以通过管理员(作为读者的代理人与系统交互)借阅、归还图书,不同类别的读者可借阅图书的范围、数量和期限不同,可通过互联网或图书馆内查询终端查询图书信息和个人借阅情况,以及续借图书(系统审核符合续借条件)。
借阅图书时,先输入读者的借阅卡号,系统验证借阅卡的有效性和读者是否可继续借阅图书,无效则提示其原因,有效则显示读者的基本信息(包括照片),供管理员人工核对。然后输入要借阅的书号,系统查阅图书信息数据库,显示图书的基本信息,供管理员人工核对。最后提交借阅请求,若被系统接受则存储借阅纪录,并修改可借阅图书的数量。归还图书时,输入读者借阅卡号和图书号(或丢失标记号),系统验证是否有此借阅纪录以及是否超期借阅,无则提示,有则显示读者和图书的基本信息供管理员人工审核。如果有超期借阅或丢失情况,先转入过期罚款或图书丢失处理。然后提交还书请求,系统接受后删除借阅纪录,并登记并修改可借阅图书的数量。
图书管理员定期或不定期对图书信息进行入库、修改、删除等图书信息管理以及注销(不外借),包括图书类别和出版社管理。为系统维护人员提供权限管理、数据备份等通用功能。
2.4业务流程分析
图书管理系统的的总体功能如下:
图书的借阅;图书的返还;学生检索书籍信息;图书的增删改;学生的增删改;图书采购信息的录入。 学生借书流程图:
学生还书过程数据流程图:
学生查询书籍信息图:
图书馆管理员对图书的的增删改数据流图:
图书馆管理员对学生的的增删改数据流图:
图书采购的数据流图:
2.5系统功能分析
系统的对象确定之后,应该对系统进行定性的分析,分析是为了了解系统应达到的目标和系统应具备的功能。
2.5.1功能分析
图书馆图书信息管理系统由两大子系统组成:图书管理和维护子系统以及图书信息服务子系统。
图书管理和维护子系统的功能包括:
(1)图书信息入库(建立信息库,以便查询和借阅)。 (2)理图书库(包括删除图书图书信息和统计图书信息)。 (3)查看图书信息。
(4)查询图书的借阅情况(包括借出情况查询、未借出情况查询和超时情况查询,同时还要知道:如果某本图书被借出,那么可直接查询到借阅者的信息,以便催还等)。
(5)图书馆的规则管理和维护(包括每人可借阅图书数目、每人每本书可持有天
数以及每超时一天的罚金数目等)。
(6) 用户信息的管理和维护(例如删除已毕业学生信息、增加新生信息等)。 (7) 数据库路径的管理和维护,主要是为了提高系统的通用性而设置的。 图书信息服务子系统的功能包括:
(1) 书信息的查询(例如在借书前可先查询某本图书是否被借出)。
(2)图书的借阅(按图书馆的规则进行借阅,例如不超过5本,如果已有超时借阅的图书,则在归还前不允许再借阅等等)。 (3)图书的归还。
2.5.2功能分析图
根据对系统功能的分析,建立了系统功能分析图,系统功能分析如图所示。该图反映了系统功能模块之间的层次关系。
3、数据库概念(模型)设计
3.1 由基本项构思ERD 的三个原则
①原则1 (确定实体):能独立存在的事物,在其有多个由基本项描述的特性需要关注时,就应把它作为实体。 实体和属性的定义:
书籍(图书编号,图书名称,作者,出版社,出版日期,备注,价格,数量,) 借书人(借书证号,姓名,性别,身份证,联系电话,密码) 身份(身份编号,身份描述,最大借阅数) 图书类别(图书类别编号,类别描述)
②原则2 (确定联系):两个或多个实体间的关联与结合,当需要予以关注时,应作为联系。实体间的联系可分为一对一、一对多、多对多等三类,在确定联系时还要确定其类型。。一种完整的方式是对局部结构中任意两个实体类型,依据需求分析的结果,考察局部结构中任意两个实体类型之间是否存在联系。若有联系,进一步确定是1:N,M:N,还是1:1等。
③原则3(确定属性):实体的属性是实体的本质特征。实体应有标识属性(能把不同个体区分开来的属性组),并指定其中一个作为主标识。联系的属性是联系的结果或状态。信息分析中得到的基本项要在且仅在实体联系图中的一个地方作为属性出现。这条原则是对ERD 的检验原则,对确定其构思是否正确具有很大的意义。首先要看ERD 中有没有重复出现的属性名,如果有,一定是错误的,要分析原因,消除重复。然后要看有无不在信息分析中作为基本项出现的属性,如果有,不一定是错误,但如果不符合基本项的要求,就是错误的,要分析原因,予以改正;如果是基本项,则往往是业务流程用到的资料不太完备,数据库设计者与用户协商后加上去的,要分析增加是否真有必要;如果信息分析中列出的基本项在ERD 中没有作为属性出现,则一定要分析原因:有时是不小心遗漏了,那就要补充到适当的地方;有的是联系的表现形式。
借书人ER 图:
书籍ER 图:
联系集的ER 模型如图所示:
3.2绘制ER 图
此系统由三个实体以及它们之间的联系组成。三个实体分别是书籍和借书人以及出版社。书籍和借书人之间以借书号和书号联系。出版社和书籍之间以出版社号和书号联系。其E-R 图和关系图如下:
书籍(书号,数量,存放位置,作/编者,出版社号,出版日期) PK (主关键字)=书号
FK (主关键字)=出版社号,参照表是出版社表 借书人(借书证号,姓名,单位,性别) PK (主关键字)=借书证号
出版社(出版社号,名称,出版日期,作/编者) PK (主关键字)=出版社号
借书(书号,借书证号,借书日期,还书日期) PK (主关键字)=书号,借书证号 FK (主关键字)=书号,参照表是书籍表 FK (主关键字)=借书证号,参照表是借书人表
根据检查,每个关系模式都已达到第三范式,无需修改。
4、数据库逻辑(模型)设计
4.1 按四原则转化
原则1:ER 图中的每一个独立实体变换为一个关系,其属性变为关系的属性,其主标识变为关系的主码。例如,图中独立实体“借书人”、“书籍”、“出版社”分别变为借书人关系、书籍关系和出版社关系。
借书人关系
书籍关系
出版社关系
原则2:ER 图中的从实体及相应的“的”联系变换为一个关系,从实体的属性加上主实体关系的主码构成这个关系的属性。如果“的”联系是1:1的,则以主实体关系的主码(作为外来码)为这个关系的主码;如果“的”联系是1:M 的,则以主实体关系的主码加上同一主实体个体联系的不同从属实体个体赖以相互区分的属性组,组成该关系的主码。
原则3:1:M 联系通过在“多”实体关系中增加相联系的“1”实体关系的
主码及联系本身的属性来表达。其中“1”实体主码为外来码。 增购
原则4:M :M 联系转换成一个独立的关系,被联系实体关系的主码(作为外来码)和联系本身的属性作为该关系的属性,被联系实体关系的主码组成其复合主码。
4.2 转化的逻辑模型
借书人关系 书籍关系
出版社关系
4.3 逻辑模型的优化
4.4 具体逻辑模型设计
书籍表
出版社表
借阅表
增购表
5、数据库物理设计与数据库保护设计
5.1设计索引
5.2设计表间关系
书籍表的主索引:书号; 借书人表的主索引:借书证号. 借书表的主索引:书号、借书证号 出版社表的主索引:出版社号
书籍表和借书人表通过借书表建立关系,把本来多对多的关系分解为两个一对多。
出版社表与书籍表是多对一的关系。
5.3完整性设计
5.4数据库保护设计
列出父表与子表的关联索引,指出要建立的表间关系的类型。 1、出版社,书籍,借书人表是独立主体为该系统的父表
2、出版社表和书籍表间是1:N 的关系,增购是出版社和书籍的联系,关系索引为出版社名和书号
3、书籍表和借书人表间是M :N 的关系, 借阅是书籍和借书人的联系, 关系索引为书号和借书证号
列出主要字段完整性的字段名、完整性约束条件;列出记录完整性约束及其约束
条件;列出参照完整性表。
借书人表
(1)实体完整性约束:借书证号是主属性,不可取空值 (2)用户自定义完整性:姓名字段不允许为空值 书籍表
(1)实体完整性约束:书号是主属性,不可取空值
(2)用户自定义完整性:数量不能为空值,以便查询书籍的总数
出版社表
(1)实体完整性约束:图书证号是主属性,不可取空值 (2)用户自定义完整性:电话不能为空值,方便联系 借阅表
(1)实体完整性约束:(书号,借书证号)是主属性,不可取空值
(2)参照完整性约束:借阅表和书籍表是参照与被参照关系,借阅表外部关键字是借书证号,借阅表和借书人表也是参照与被参照关系,书籍表的外部关键字是借书证号
(3)用户定义完整性:借书日期字段类型为日期、还书日期字段类型为日期
增购表
(1)实体完整性约束:(出版商名称,图书号)是主属性,不可取空值 (2)参照完整性约束:增购表和出版社表是参照与被参照关系,增购表外部关键字是出版社名,增购表和书籍表也是参照与被参照关系,增购表的外部关键字是书号
(3)用户自定义约束:增购日期字段类型为日期。
6、数据库实现
6.1建立数据库
create database 图书馆
on (name =library , filename ='e:\library.mdf', size =10, maxsize =50, filegrowth =5)
log on (name =library_log, filename ='e:\library.ldf', size =5mb , maxsize =25mb , filegrowth =5mb
)
6.2 建立数据表
建立借书人表
create schema library create table library. 借书人 (借书证号char (20) primary key , 单位char (20),
姓名char (8) not null, 性别char (10) )
建立书籍表
create table library. 书籍表 (书号char (10) primary key , 种类char (20),
数量tinyint not null, 存放位置char (20)
)
建立出版社
create table library. 出版社 (出版社名char (40) primary key , 电话char (20) not null, 邮编tinyint , 地址char (40) )
建立借阅表
create table library. 借阅
(借书证号char (20) foreign key references library. 借书人(借书证号), 书号char (10) foreign key references library. 书籍表(书号), 借书日期datetime , 还书日期datetime
Primary key (书号, 借书证号
))
输入数据如图所示
建立增购表
create table library. 增购表
(出版社名char (40) foreign key references library. 出版社(出版社名), 书号char (10) foreign key references library. 书籍表(书号), 增购日期datetime , 增购数量tinyint
Primary key (出版社名, 书号
))
输入数据如下
表格建立完成后,可得到全部数据。 全部表格如下:
数据库的表间关系
6.3简单查询
Select * from library. 出版社
select * from library. 出版社 where 出版社名=’龙洞出版社’
select 出版社名, 还书日期from library. 借阅join library. 增购表on 借阅. 书号= 增购表. 书号where 借书证号='3109005101'
6.4存储过程
存储过程1
Create procedure ddd @cb char (10) As
Select * from library. 增购表where 出版社名=@cb
Execute ccc @cb=' 龙洞出版社'
存储过程2
create procedure library. uspGetCoursel @type char (20) As
Select 书号, 增购日期, 增购数量
From library. 增购表join library. 出版社on library. 增购表. 出版社名=library . 出版社. 出版社名 where 书号=@type
Execute library. uspGetCoursel @type='A101'
6.5建立视图
create view library. 科学As select 书号, 数量, 存放位置 from library. 书籍表 where 种类= ' 科学'
如图所示
create view library. 借阅证号As select 书号, 借书日期, 还书日期 from library. 借阅
where 借书证号='3109005101'
如图所示:
具体的试图跟存储过程如下:
7、总结与体会
其实刚接触《数据库应用与设计》这门课程的时候给我的感觉是好像没有什么用的,而且刚开始也不知道听什么,但是随着老师的不断讲解和学习的深入,我也渐渐拨开数据库的神秘面纱了。原来数据库在我们生活中的用处是这么大的,大到国家安全数据的管理,小到公司一个小职员的工资,都有用到它的地方,尤其是经过这次的课程设计后,我也对一些数据库的建立及应该注意的问题有了一定的了解,相信会在我以后的生活和工作中带来很大的方便。
数据库是一个非常严谨的东西,容不得出半点差错,有时候甚至会导致整个数据系统无法正常运行,它需要我们用心去对待,用心去理解,还要经过一定的练习才能很好的掌握它,而课程设计是数据库中十分重要的实践性教学环节。是对学生进行专业基本训练,培养实践动手能力和向实践学习,理论联系实际的重要课程。
虽然在整个课程设计过程中对一些实践性的操作还不太熟悉,可以说是断断续续地完成的,但它依然给我带来了一些很有用的东西,例如你要对专业术语的概念有一定的了解,什么是关键字、外码、完整性约束„„这些都是一定要知道,要不然你根本就不知道从什么地方下手去做;还有对语句的了解,它是什么意思或者代表了什么字段类型都是要知道的等等。
从某种意义上看来说,对于数据库的学习不仅仅改变了我对与数据库的看法,同时也改变了我对于课程设计的看法。按照自己的主观意识去想是不科学的,应该经过规划和研究分析才能上手。同时,老师布置的题目其实是对于我们的所学习知识的一种检验与扩充。因为作业会结合很多的其他知识,同时做项目的过程是一个对于知识的重新审视与巩固的过程。
在这次课程设计中,感触颇深,收获也挺大,缘由如下:
1. 由于电脑系统的兼容性问题,我的笔记本装不了SQL2005,只有在早上跟下午实验室开放的时间段去进行操作,这样的生活坚持了好几天——看着那慢吞吞的行为和老是做不对的那种焦急感,心理很是郁闷,不过也极大的锻炼了自己的耐心,印象特别深刻的是在写代码的时候,出现了一次又一次的报错,有时甚至检查了十几遍,但就不是代码的问题,最后结果发现只是一个小小的空格或是
缺少一个逗号而导致的。但看到自己最后的成果,心里还是美滋滋的,毕竟这是自己的汗水。
2. 感觉自己虽然学习了数据库和信息关系信息系统的有关知识,但是都只是在比较表面的,还有很多知识在运用上还不是很熟悉。在这次课程设计中,很感谢同学不厌其烦的给我解释和指导,当然,这也增进我们的沟通与交流,也增进了感情,还有就是我们要做到不懂就问,共同解决难题。
3. 这次课程设计,感觉数据库的确很有用,也是必须学会的。做完图书借阅管理系统,真正感到学以致用的妙处。学了SQL ,我懂得了怎样去建立简单的数据库,当然还有之前的很多准备工作,想做好一个有实际用途的数据库就这些知识还不够的,所以还得抓住机会学习更多的知识,学无止境。
最后,老师在这一学期的教学是大家喜欢的,老师的教学大家都感觉很不错,大家也学到很多知识。这学期的数据库课程让我觉得有所收获、有所得,加强了对于课程本身的理解,同时也扩展了我的知识面。非常感谢老师的指导,祝老师在新的一年里工作顺利,心想事成。
一、课程设计的内容
一个图书借阅管理数据库要求提供以下服务:
(1)可随时查询书库中现有书籍的种类、数量与存放位置。所有各类书籍均可由书号唯一标识。
(2)可随时查询书籍借还情况。包括借书人单位、姓名、借书证号、借书日期和还书日期。任何人可借多种书,任何一种书可为多个人所借,借书证号具有唯一性。
(3)当需要时,可通过数据库中保存的出版社电话、邮编及地址等信息向有关书籍的出版社增购有关书籍。一个出版社可出版多种书籍,同一本书仅为一个出版社出版,出版社名具有唯一性。
根据以上的情景假设,进行如下的分析与设计: (1)根据上述语义画出ER 图。
(2)将ER 模型转换成关系模型,并指出每个关系模式的主关键字。
(3)分析每个关系模式已经达到第几范式。对于不符合第三范式要求的关系模式进行规范化。
(4)根据概念模型设计逻辑模型和保护设计。 (5)在SQLServer 中实现。
二、课程设计的要求与数据
根据教师给定的选题,运用课堂中学到的数据库的基本理论与设计的知识,完成数据库概念设计、逻辑设计及部分物理设计的内容。重点是ER 图的设计、关系模式的转换与规范化以及如何利用DBMS 完成数据表及数据库的创建和操作。具体要求包括:
1.开发环境要求:SQL Server 2005 2.提交课程设计报告一份,包括以下内容:
① 用户需求:要解决的主要问题,达到的具体指标等。
② 业务流程分析:描述系统的业务流程,画出规范的业务流程图。 ③ 数据库概念模式设计
写出由基本项相应得出的实体、联系及其属性,并确定主实体的标识特征,画出ERD ;对其中复杂的多元联系进行分析,必要则改进。
④ 数据库逻辑模式设计
4.1 一般逻辑模型设计:写出由ERD 导出一般关系模型的四条原则,列出数据库初步构思的关系框架,并检查改进之。
4.2 具体逻辑模型设计:按所用的DBMS 要求,设计表(文件)的具体结构,在关系框架下补充字段类型、长度、小数位数等行。
⑤ 数据库保护设计
5.1 设计表间关系:列出数据库表间的关联关系。
5.2 完整性设计:列出主要字段完整性的字段名、完整性约束条件;列出记录完整性约束及其约束条件;列出参照完整性表。 ⑥ 数据库系统的实现
6.1 数据库及其表结构的建立:建立数据库描述文件及建立其数据库表,注意完整性与关联的实现,并附作为命令执行结果的数据库表结构及其关联图、参照完整性表。
6.2 数据输入:录入数据,并打印出各表的内容,要求每个表至少有15条记录。 3.提交光盘(每班统一制作1张光盘,每人一个文件夹,文件夹名为“学号姓名”)。每人的光盘文件夹内含:
① 任务书;
② 数据库文件(包括数据文件和日志文件); ③ 课程设计报告电子文档。
三、课程设计应完成的工作
1要求完成一个系统设计的主要过程:需求分析、系统分析、系统设计、系统实现等过程。
2 完成设计后,要写出设计报告。
四、课程设计进程安排
1、概述............................................................. 4
1.1系统的基本任务............................................... 5 1.2系统的主要业务............................................... 5 1.3系统的开发目标............................................... 5 2、需求分析......................................................... 6
2.1用户需求..................................................... 6 2.2数据需求..................................................... 7 2.3 需求规定 .................................................... 8 2.4业务流程分析................................................. 9 2.5系统功能分析................................................ 12
2.5.1功能分析 .............................................. 12 2.5.2功能分析图 ............................................ 13
3、数据库概念(模型)设计.......................................... 14
3.1 由基本项构思ERD 的三个原则 ................................. 14 3.2绘制ER 图................................................... 17 4、数据库逻辑(模型)设计.......................................... 19
4.1 按四原则转化 ............................................... 19 4.2 转化的逻辑模型 ............................................. 20 4.3 逻辑模型的优化 ............................................. 21 4.4 具体逻辑模型设计 ........................................... 21 5、数据库物理设计与数据库保护设计.................................. 23
5.1设计索引.................................................... 23 5.2设计表间关系................................................ 24 5.3完整性设计.................................................. 24 5.4数据库保护设计.............................................. 24 6、数据库实现...................................................... 26
6.1建立数据库.................................................. 26 6.2 建立数据表 ................................................. 27 6.3简单查询.................................................... 33 6.4存储过程.................................................... 35 6.5建立视图.................................................... 37 7、总结与体会...................................................... 41
1、概述
图书馆信息管理系统是一种在学校中常用的一种系统。它从图书的入库登记到查询浏览,从读者的管理到图书的借阅,形成了一个整体自动化管理模式。系统主要有三个方面的内容:一方面是图书管理,主要包括新书入库 图书整理 图书信息的修改等方面。一方面是图书借阅,主要包括图书的借阅和归还。第三方面是信息查询,主要包括图书目录查询 读者信息查询等。随着社会信息量的与日俱增,作为信息存储的主要媒体之一图书,数量、规模比以往任何时候都大的多,不论个人还是图书管理部门都需要使用方便而有效的方式来管理自己的书籍。《图书馆管理系统》能够高效的完成图书管理员的基本业务需求和系统管理员的管理需求,并能根据需要,完成读者所提出的需求。是图书馆日常管理不可或缺的管理系统。
《图书管理系统》主要功能描述1.1系统的基本任务
图书的使用对象是借阅者,例如学生,教师;管理者是图书馆的管理员。因此根据这些信息,本系统的主要功能就是:实现图书馆图书信息的管理和维护,如用户信息管理,图书馆规则维护,新书入库,整理图书,修改图书信息和进行查询等;以及服务系统的图书信息查询,图书的借出和归还等功能图书信息管理系统能够为用户提供充足的信息和快捷的查询手段. 例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。因此要提供真实的、详细的、全面的、系统化的图书管理。为读者借书及管理员的管理提供方便。
1.2系统的主要业务
一是:借书人借书。借书人可以通过本系统,快速而且方便地查询到自己所要找的书,很方便快捷;二是:图书馆的日常管理。图书馆通过本系统, 可以掌握整个图书馆的所有书籍和的全部信息与借书人的借书情况,为图书馆的日常管理提供全面、有用并且有序的信息,方便了图书馆的管理,提高了图书馆的管理效率。
1.3系统的开发目标
通过建立一个较为全面系统化的图书馆管理系统,为借书人借书提供便利,同时也为图书馆的正常有序管理提供方便。大学图书馆管理信息系统为广大大学师生提供了便利的图书借阅服务。本系统面向全体教职职工与学生,该系统根据不同的操作者,提供不同的服务,以实现图书管理系统的科学化、系统化、自动化,最大限度地为老师和学生提供方便和提供管理效率。
2、需求分析
2.1用户需求
我们总可以看到图书馆里,书籍琳琅满目,很多,而且图书的种类也多种多样。这就给图书馆的管理带来很多麻烦,也是借书人非常头痛的问题。
从借书人的角度来说,当到书山书海中,找一本书就像大海捞针一样。这样不仅费时又费神,而且还不一定能找得到,去图书馆不是去看书,而是大部分去找书。所以把书籍分门别类,按一定的分类,按一定顺序编排出来,对借书人来说是很有用处,很有必要的。
从图书馆的角度来说,图书馆里的书多人杂。一个方便全面的系统是必须的,这个系统可以用来管理书籍也可以用来管理借还书业务,而是图书馆的管理有条有理。
图书馆配置一些检索器,把书籍的资料都整理在里面,包括书号、书名、数量,借还状况等等,可供借书人检查,方便借书人知道有什么书以及书的位置,数量,可否借等等情况。然后在系统里面也会登记每个借书人的借书状况。
系统需具备以下功能:查询功能、增加功能、删除功能、修改功能。
图书馆管理信息系统功能模块
2.2数据需求
图书目录,包括图书编号、图书名称、作者名称、出版社、出版日期、图书编号、图书单价、图书类别等。
读者明细,包括读者编号、读者名称、性别、单位地址、所在城市、所在地区、邮政编码、电话号码、传真号码、公司主页、备注信息等。
借阅情况,包括图书编号、图书名称、出版社、读者名称、读者编号、结束日期、还书日期等。
借阅状态,包括图书编号、图书名称、作者名称、出版社、出版日期、图书编号、单价、图书类别、状态信息等。
系统中用到的数据表:
书籍表:
借书人表: 借书表:
出版社表:
2.3 需求规定
在图书管理系统中,管理员要为每个读者建立借阅账户,并給读者发放不同类别的借阅卡(借阅卡可提供卡号、读者姓名),账户内存储读者的个人信息和借阅记录信息。持有借阅卡的读者可以通过管理员(作为读者的代理人与系统交互)借阅、归还图书,不同类别的读者可借阅图书的范围、数量和期限不同,可通过互联网或图书馆内查询终端查询图书信息和个人借阅情况,以及续借图书(系统审核符合续借条件)。
借阅图书时,先输入读者的借阅卡号,系统验证借阅卡的有效性和读者是否可继续借阅图书,无效则提示其原因,有效则显示读者的基本信息(包括照片),供管理员人工核对。然后输入要借阅的书号,系统查阅图书信息数据库,显示图书的基本信息,供管理员人工核对。最后提交借阅请求,若被系统接受则存储借阅纪录,并修改可借阅图书的数量。归还图书时,输入读者借阅卡号和图书号(或丢失标记号),系统验证是否有此借阅纪录以及是否超期借阅,无则提示,有则显示读者和图书的基本信息供管理员人工审核。如果有超期借阅或丢失情况,先转入过期罚款或图书丢失处理。然后提交还书请求,系统接受后删除借阅纪录,并登记并修改可借阅图书的数量。
图书管理员定期或不定期对图书信息进行入库、修改、删除等图书信息管理以及注销(不外借),包括图书类别和出版社管理。为系统维护人员提供权限管理、数据备份等通用功能。
2.4业务流程分析
图书管理系统的的总体功能如下:
图书的借阅;图书的返还;学生检索书籍信息;图书的增删改;学生的增删改;图书采购信息的录入。 学生借书流程图:
学生还书过程数据流程图:
学生查询书籍信息图:
图书馆管理员对图书的的增删改数据流图:
图书馆管理员对学生的的增删改数据流图:
图书采购的数据流图:
2.5系统功能分析
系统的对象确定之后,应该对系统进行定性的分析,分析是为了了解系统应达到的目标和系统应具备的功能。
2.5.1功能分析
图书馆图书信息管理系统由两大子系统组成:图书管理和维护子系统以及图书信息服务子系统。
图书管理和维护子系统的功能包括:
(1)图书信息入库(建立信息库,以便查询和借阅)。 (2)理图书库(包括删除图书图书信息和统计图书信息)。 (3)查看图书信息。
(4)查询图书的借阅情况(包括借出情况查询、未借出情况查询和超时情况查询,同时还要知道:如果某本图书被借出,那么可直接查询到借阅者的信息,以便催还等)。
(5)图书馆的规则管理和维护(包括每人可借阅图书数目、每人每本书可持有天
数以及每超时一天的罚金数目等)。
(6) 用户信息的管理和维护(例如删除已毕业学生信息、增加新生信息等)。 (7) 数据库路径的管理和维护,主要是为了提高系统的通用性而设置的。 图书信息服务子系统的功能包括:
(1) 书信息的查询(例如在借书前可先查询某本图书是否被借出)。
(2)图书的借阅(按图书馆的规则进行借阅,例如不超过5本,如果已有超时借阅的图书,则在归还前不允许再借阅等等)。 (3)图书的归还。
2.5.2功能分析图
根据对系统功能的分析,建立了系统功能分析图,系统功能分析如图所示。该图反映了系统功能模块之间的层次关系。
3、数据库概念(模型)设计
3.1 由基本项构思ERD 的三个原则
①原则1 (确定实体):能独立存在的事物,在其有多个由基本项描述的特性需要关注时,就应把它作为实体。 实体和属性的定义:
书籍(图书编号,图书名称,作者,出版社,出版日期,备注,价格,数量,) 借书人(借书证号,姓名,性别,身份证,联系电话,密码) 身份(身份编号,身份描述,最大借阅数) 图书类别(图书类别编号,类别描述)
②原则2 (确定联系):两个或多个实体间的关联与结合,当需要予以关注时,应作为联系。实体间的联系可分为一对一、一对多、多对多等三类,在确定联系时还要确定其类型。。一种完整的方式是对局部结构中任意两个实体类型,依据需求分析的结果,考察局部结构中任意两个实体类型之间是否存在联系。若有联系,进一步确定是1:N,M:N,还是1:1等。
③原则3(确定属性):实体的属性是实体的本质特征。实体应有标识属性(能把不同个体区分开来的属性组),并指定其中一个作为主标识。联系的属性是联系的结果或状态。信息分析中得到的基本项要在且仅在实体联系图中的一个地方作为属性出现。这条原则是对ERD 的检验原则,对确定其构思是否正确具有很大的意义。首先要看ERD 中有没有重复出现的属性名,如果有,一定是错误的,要分析原因,消除重复。然后要看有无不在信息分析中作为基本项出现的属性,如果有,不一定是错误,但如果不符合基本项的要求,就是错误的,要分析原因,予以改正;如果是基本项,则往往是业务流程用到的资料不太完备,数据库设计者与用户协商后加上去的,要分析增加是否真有必要;如果信息分析中列出的基本项在ERD 中没有作为属性出现,则一定要分析原因:有时是不小心遗漏了,那就要补充到适当的地方;有的是联系的表现形式。
借书人ER 图:
书籍ER 图:
联系集的ER 模型如图所示:
3.2绘制ER 图
此系统由三个实体以及它们之间的联系组成。三个实体分别是书籍和借书人以及出版社。书籍和借书人之间以借书号和书号联系。出版社和书籍之间以出版社号和书号联系。其E-R 图和关系图如下:
书籍(书号,数量,存放位置,作/编者,出版社号,出版日期) PK (主关键字)=书号
FK (主关键字)=出版社号,参照表是出版社表 借书人(借书证号,姓名,单位,性别) PK (主关键字)=借书证号
出版社(出版社号,名称,出版日期,作/编者) PK (主关键字)=出版社号
借书(书号,借书证号,借书日期,还书日期) PK (主关键字)=书号,借书证号 FK (主关键字)=书号,参照表是书籍表 FK (主关键字)=借书证号,参照表是借书人表
根据检查,每个关系模式都已达到第三范式,无需修改。
4、数据库逻辑(模型)设计
4.1 按四原则转化
原则1:ER 图中的每一个独立实体变换为一个关系,其属性变为关系的属性,其主标识变为关系的主码。例如,图中独立实体“借书人”、“书籍”、“出版社”分别变为借书人关系、书籍关系和出版社关系。
借书人关系
书籍关系
出版社关系
原则2:ER 图中的从实体及相应的“的”联系变换为一个关系,从实体的属性加上主实体关系的主码构成这个关系的属性。如果“的”联系是1:1的,则以主实体关系的主码(作为外来码)为这个关系的主码;如果“的”联系是1:M 的,则以主实体关系的主码加上同一主实体个体联系的不同从属实体个体赖以相互区分的属性组,组成该关系的主码。
原则3:1:M 联系通过在“多”实体关系中增加相联系的“1”实体关系的
主码及联系本身的属性来表达。其中“1”实体主码为外来码。 增购
原则4:M :M 联系转换成一个独立的关系,被联系实体关系的主码(作为外来码)和联系本身的属性作为该关系的属性,被联系实体关系的主码组成其复合主码。
4.2 转化的逻辑模型
借书人关系 书籍关系
出版社关系
4.3 逻辑模型的优化
4.4 具体逻辑模型设计
书籍表
出版社表
借阅表
增购表
5、数据库物理设计与数据库保护设计
5.1设计索引
5.2设计表间关系
书籍表的主索引:书号; 借书人表的主索引:借书证号. 借书表的主索引:书号、借书证号 出版社表的主索引:出版社号
书籍表和借书人表通过借书表建立关系,把本来多对多的关系分解为两个一对多。
出版社表与书籍表是多对一的关系。
5.3完整性设计
5.4数据库保护设计
列出父表与子表的关联索引,指出要建立的表间关系的类型。 1、出版社,书籍,借书人表是独立主体为该系统的父表
2、出版社表和书籍表间是1:N 的关系,增购是出版社和书籍的联系,关系索引为出版社名和书号
3、书籍表和借书人表间是M :N 的关系, 借阅是书籍和借书人的联系, 关系索引为书号和借书证号
列出主要字段完整性的字段名、完整性约束条件;列出记录完整性约束及其约束
条件;列出参照完整性表。
借书人表
(1)实体完整性约束:借书证号是主属性,不可取空值 (2)用户自定义完整性:姓名字段不允许为空值 书籍表
(1)实体完整性约束:书号是主属性,不可取空值
(2)用户自定义完整性:数量不能为空值,以便查询书籍的总数
出版社表
(1)实体完整性约束:图书证号是主属性,不可取空值 (2)用户自定义完整性:电话不能为空值,方便联系 借阅表
(1)实体完整性约束:(书号,借书证号)是主属性,不可取空值
(2)参照完整性约束:借阅表和书籍表是参照与被参照关系,借阅表外部关键字是借书证号,借阅表和借书人表也是参照与被参照关系,书籍表的外部关键字是借书证号
(3)用户定义完整性:借书日期字段类型为日期、还书日期字段类型为日期
增购表
(1)实体完整性约束:(出版商名称,图书号)是主属性,不可取空值 (2)参照完整性约束:增购表和出版社表是参照与被参照关系,增购表外部关键字是出版社名,增购表和书籍表也是参照与被参照关系,增购表的外部关键字是书号
(3)用户自定义约束:增购日期字段类型为日期。
6、数据库实现
6.1建立数据库
create database 图书馆
on (name =library , filename ='e:\library.mdf', size =10, maxsize =50, filegrowth =5)
log on (name =library_log, filename ='e:\library.ldf', size =5mb , maxsize =25mb , filegrowth =5mb
)
6.2 建立数据表
建立借书人表
create schema library create table library. 借书人 (借书证号char (20) primary key , 单位char (20),
姓名char (8) not null, 性别char (10) )
建立书籍表
create table library. 书籍表 (书号char (10) primary key , 种类char (20),
数量tinyint not null, 存放位置char (20)
)
建立出版社
create table library. 出版社 (出版社名char (40) primary key , 电话char (20) not null, 邮编tinyint , 地址char (40) )
建立借阅表
create table library. 借阅
(借书证号char (20) foreign key references library. 借书人(借书证号), 书号char (10) foreign key references library. 书籍表(书号), 借书日期datetime , 还书日期datetime
Primary key (书号, 借书证号
))
输入数据如图所示
建立增购表
create table library. 增购表
(出版社名char (40) foreign key references library. 出版社(出版社名), 书号char (10) foreign key references library. 书籍表(书号), 增购日期datetime , 增购数量tinyint
Primary key (出版社名, 书号
))
输入数据如下
表格建立完成后,可得到全部数据。 全部表格如下:
数据库的表间关系
6.3简单查询
Select * from library. 出版社
select * from library. 出版社 where 出版社名=’龙洞出版社’
select 出版社名, 还书日期from library. 借阅join library. 增购表on 借阅. 书号= 增购表. 书号where 借书证号='3109005101'
6.4存储过程
存储过程1
Create procedure ddd @cb char (10) As
Select * from library. 增购表where 出版社名=@cb
Execute ccc @cb=' 龙洞出版社'
存储过程2
create procedure library. uspGetCoursel @type char (20) As
Select 书号, 增购日期, 增购数量
From library. 增购表join library. 出版社on library. 增购表. 出版社名=library . 出版社. 出版社名 where 书号=@type
Execute library. uspGetCoursel @type='A101'
6.5建立视图
create view library. 科学As select 书号, 数量, 存放位置 from library. 书籍表 where 种类= ' 科学'
如图所示
create view library. 借阅证号As select 书号, 借书日期, 还书日期 from library. 借阅
where 借书证号='3109005101'
如图所示:
具体的试图跟存储过程如下:
7、总结与体会
其实刚接触《数据库应用与设计》这门课程的时候给我的感觉是好像没有什么用的,而且刚开始也不知道听什么,但是随着老师的不断讲解和学习的深入,我也渐渐拨开数据库的神秘面纱了。原来数据库在我们生活中的用处是这么大的,大到国家安全数据的管理,小到公司一个小职员的工资,都有用到它的地方,尤其是经过这次的课程设计后,我也对一些数据库的建立及应该注意的问题有了一定的了解,相信会在我以后的生活和工作中带来很大的方便。
数据库是一个非常严谨的东西,容不得出半点差错,有时候甚至会导致整个数据系统无法正常运行,它需要我们用心去对待,用心去理解,还要经过一定的练习才能很好的掌握它,而课程设计是数据库中十分重要的实践性教学环节。是对学生进行专业基本训练,培养实践动手能力和向实践学习,理论联系实际的重要课程。
虽然在整个课程设计过程中对一些实践性的操作还不太熟悉,可以说是断断续续地完成的,但它依然给我带来了一些很有用的东西,例如你要对专业术语的概念有一定的了解,什么是关键字、外码、完整性约束„„这些都是一定要知道,要不然你根本就不知道从什么地方下手去做;还有对语句的了解,它是什么意思或者代表了什么字段类型都是要知道的等等。
从某种意义上看来说,对于数据库的学习不仅仅改变了我对与数据库的看法,同时也改变了我对于课程设计的看法。按照自己的主观意识去想是不科学的,应该经过规划和研究分析才能上手。同时,老师布置的题目其实是对于我们的所学习知识的一种检验与扩充。因为作业会结合很多的其他知识,同时做项目的过程是一个对于知识的重新审视与巩固的过程。
在这次课程设计中,感触颇深,收获也挺大,缘由如下:
1. 由于电脑系统的兼容性问题,我的笔记本装不了SQL2005,只有在早上跟下午实验室开放的时间段去进行操作,这样的生活坚持了好几天——看着那慢吞吞的行为和老是做不对的那种焦急感,心理很是郁闷,不过也极大的锻炼了自己的耐心,印象特别深刻的是在写代码的时候,出现了一次又一次的报错,有时甚至检查了十几遍,但就不是代码的问题,最后结果发现只是一个小小的空格或是
缺少一个逗号而导致的。但看到自己最后的成果,心里还是美滋滋的,毕竟这是自己的汗水。
2. 感觉自己虽然学习了数据库和信息关系信息系统的有关知识,但是都只是在比较表面的,还有很多知识在运用上还不是很熟悉。在这次课程设计中,很感谢同学不厌其烦的给我解释和指导,当然,这也增进我们的沟通与交流,也增进了感情,还有就是我们要做到不懂就问,共同解决难题。
3. 这次课程设计,感觉数据库的确很有用,也是必须学会的。做完图书借阅管理系统,真正感到学以致用的妙处。学了SQL ,我懂得了怎样去建立简单的数据库,当然还有之前的很多准备工作,想做好一个有实际用途的数据库就这些知识还不够的,所以还得抓住机会学习更多的知识,学无止境。
最后,老师在这一学期的教学是大家喜欢的,老师的教学大家都感觉很不错,大家也学到很多知识。这学期的数据库课程让我觉得有所收获、有所得,加强了对于课程本身的理解,同时也扩展了我的知识面。非常感谢老师的指导,祝老师在新的一年里工作顺利,心想事成。