资源描述
图书馆管理数据库课程设计
———————————————————————————————— 作者:
———————————————————————————————— 日期:
2
个人收集整理 勿做商业用途
《数据库系统原理》课程设计
荆楚理工学院
课程设计成果
学院:____计算机工程学院_____________ 班 级: 08 一班
学生 姓名:吉训皇 学 号: 2008404010157
设计地点(单位)__数据库实验室1 A5-301____________ ____________
设计题目:_图书馆管理______________________________________
完成日期: 2010年 12月 日
指导教师评语: ______________ ______________________________________________________________
_________________________________________________________________________________________________________________________________________________________________________________________________________ __________ _
成绩(五级记分制):_____ _ __________
教师签名:__________ _______________
1 引言 3
2 需求分析 3
2.1 处理对象 4
2。1。1 处理要求及功能 4
3 数据库概念模式设计 5
3.1 图书管理数据流图 5
3.2 由数据流图抽象出E—R图 6
4 数据库逻辑模式设计 7
4.1 将E—R图转换成关系模型 7
4.2 关系模式优化 8
4.2.1 关系规范化 8
4.2.2 关系完整性约束 8
5 数据库的实施与维护 10
5.1 建立数据库及其对象 10
5.1。1 创建模式 10
5.1。2 创建数据表 10
5.1.3 创建索引 12
6 学习心得 13
17
1 引言
随着社会信息量的与日俱增,图书作为信息存储的主要媒体之一,数量、规模都比以往任何时候大的多,图书管理部门需要使用方便有效的方式来管理数量庞大的的书籍。
在计算机日益普及的今天,以前单一的手工检索已不能满足人们的要求,为了便于管理图书和读者资料,图书管理部门需要有效的图书管理软件。对于日益扩大的图书馆,查找特定的书目总是借阅者或工作人员劳神费力,有时还没有结果.因此往往是投入了大量的人力和财力却得不到高效的管理效率.为了缩短借阅者的等待时间,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、智能化管理,从而达到提高图书借阅信息管理效率的目的,采用数据库技术生成的图书馆借阅管理系统将会极大地方便借阅者并简化图书馆管理人员及其劳动,使工作人员从繁忙、复杂的工作进入到一个简单、高效的工作中。
2 需求分析
从课程设计选题中可以得知,我们设计的图书管理数据库需具备以下功能:
(1)可随时查询书库中现有书籍的种类、数量与存放位置。
(2)可随时查询书籍借还情况。包括借书人单位、姓名、借书证号、借书日期和还书日期。
(3)当需要时,可通过数据库中保存的出版社电话、邮编及地址等信息向有关书籍的出版社增购有关书籍。
2.1 处理对象
读者信息:姓名,借书证号,借书人单位
图书信息:书名,书号,种类,总数量,存放位置,出版社名
出版社信息:出版社名,电话,邮编,地址
借阅信息:借书证号,书号,借书日期,还书日期
2.1.1 处理要求及功能
(1)能够存储一定数量的图书信息,并方便有效的进行相应的书籍数据操作和管理,这主要包括:
Ø 图书信息的录入、删除及修改。
Ø 图书信息的多关键字检索查询.
Ø 图书的出借和返还。
(2)能够对一定数量的读者进行相应的信息存储与管理,这其中包括:
Ø 读者信息的录入、删除及修改。
Ø 读者资料的统计与查询。
(3)能够对一定数量的出版社进行相应的信息存储与管理,这其中包括:
Ø 出版社信息的录入、删除及修改。
Ø 出版社资料的统计与查询。
(4)对查询、统计的结果能够列表显示.
3 数据库概念模式设计
先设计面向全局应用的全局概念结构的初步框架,然后根据中层数据流图抽象出总体E—R图,最后解决各局部E—R图间的冲突问题。
3.1 图书管理数据流图
(1)第一层数据流图:
借阅信息
出版社信息
图书信息
读者信息
管理员
图书管理数据库
(2)第二层数据流图:
借还书日期
查询结果信息
查询信息
新出版社信息
新图书信息
新读者信息
管理员
更新读者信息
更新图书信息
更新出版社信息
读者信息表
图书信息表
出版社信息表
借阅信息表
查询
3.2 由数据流图抽象出E-R图
因为课程设计选题里没有要求对管理员进行定义,所以本课程设计将忽略管理员这一实体,同时为了简便起见,将从第二层数据流图直接抽象出以下总体E—R图:读者
图书
出版社
姓名
借书证号
借书人单位
借还书
借书证号
书号
借书日期
还书日期
书号
种类
总数量
存放位置
出版社名
属于
出版社名
电话
邮编
地址
m
n
n
1
出版社名
书名
4 数据库逻辑模式设计
4.1 将E—R图转换成关系模型
读者、图书和出版社均为实体,因此它们各自转换成一个独立关系模式,实体的属性就是关系的属性,实体的码就是关系的码。由于读者与图书之间的联系方式为m:n,所以其联系需转化为独立的关系模式,与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。而图书与出版社的联系方式为n:1,所以将其之间的联系与n端实体合并。
所以,具体的总体E—R图向关系模型的转化如下:
读者(姓名,借书证号,借书人单位)
图书(书名,书号,种类,总数量,存放位置,出版社名)
出版社(出版社名,电话,邮编,地址)
借阅信息(借书证号,书号,借书日期,还书日期)
(注:标有红色下划线的为主关键字,标有绿色波浪线的为外部关键字)
4.2 关系模式优化
4.2.1 关系规范化
由于关系模式“读者"、“图书”、“出版社”和“借阅信息"的所有分量都是不可分的最小数据项,且不存在非主属性对主属性的部分函数依赖,也不存在传递函数依赖,都已达到3NF,所以不用规范化.
4.2.2 关系完整性约束
根据实体完整性、参照完整性和用户定义完整性的规则,得到以下数据表设计(注:带红色下划线的为主关键字,带绿色波浪线的为外部关键字):
表4。1 读者信息表
列名
数据类型
宽度
可否为空
索引
姓名
Char
8
not null
升序
借书证号
Char
10
not null
升序
借书人单位
Char
40
表4.2 图书信息表
列名
数据类型
宽度
可否为空
索引
书名
Char
40
not null
升序
书号
Char
10
not null
升序
种类
Char
10
总数量
Tinyint
not null
存放位置
Char
10
not null
出版社名
Char
20
表4。3 出版社信息表
列名
数据类型
宽度
可否为空
索引
出版社名
Char
20
not null
升序
电话
Char
20
邮编
Char
10
地址
Char
40
表4.4 借阅信息表
列名
数据类型
宽度
可否为空
索引
借书证号
Char
10
not null
升序
书号
Char
10
not null
升序
借书日期
Datetime
not null
升序
还书日期
Datetime
not null
升序
5 数据库的实施与维护
5.1 建立数据库及其对象
5.1.1 创建模式
create schema bookmanager
5.1.2 创建数据表
(1)读者信息表的建立。命令如下:
create table bookmanager。读者
(姓名 char(8) not null,
借书证号 char(10) primary key not null,
借书人单位 char(40))
(2)出版社信息表的建立。命令如下:
create table bookmanager.出版社
(出版社名 char(20) primary key not null,
电话 char(20),
邮编 char(10),
地址 char(40))
(3)图书信息表的建立。命令如下:
create table bookmanager。图书
(书名 char(40) not null,
书号 char(10) primary key not null,
种类 char(10),
总数量 tinyint not null,
存放位置 char(10) not null,
出版社名 char(20) foreign key references bookmanager。出版社)
(4)借阅信息表的建立。命令如下:
create table bookmanager.借阅信息
(借书证号char(10) foreign key references bookmanager。读者not null,
书号char(10) foreign key references bookmanager.图书not null,
借书日期datetime not null,
还书日期datetime not null,
primary key(借书证号,书号))
5.1.3 创建索引
考虑到在连接中会频繁使用到表bookmanager.读者中的“姓名”和“借书证号”两列,同时“借书证号”列已经存在唯一索引,所以在表bookmanager.读者创建一个名为“读者信息”的非聚簇索引,索引关键字为“姓名”、“借书证号”。命令如下:
create nonclustered index 读者信息on bookmanager。读者(借书证号,姓名)
同理,在表bookmanager。图书上创建名为“图书信息”的非聚簇索引,索引关键字为“书名”、“书号"。命令如下:
create nonclustered index 图书信息on bookmanager.图书(书号,书名)
在表bookmanager.借阅信息上创建名为“借阅时间”的非聚簇索引,索引关键字为“借书日期”、“还书日期”.命令如下:
create nonclustered index 借阅时间on bookmanager.借阅信息(借书日期,还书日期)
6 学习心得
通过本次课程设计,我进一步了解数据库的基本概念、原理和技术,结合实际的操作和设计,巩固了课堂的教学内容,将理论与实际相结合,加强了自我实践意识、提高了实际动手能力和创新能力。
由于本次课程设计的内容不多,因此我独立一人完成了所有工作,途中也遇到了不少问题,例如如何画出准确的E—R图、如何将E—R图转换成关系模式、对索引的概念和功能的了解以及怎样创建索引等。通过自我查找书籍和利用互联网这个自我学习的平台,我顺利解决了大部分问题。通过互联网上有用的资料,我认识到要获得有效地E—R图需充分了解数据的流程,所以需画出各个层次的数据流图,从中层或底层数据流图抽象出局部的E—R图,再合并各局部E—R图并解决冲突,最后得到有效的总体E-R图。而索引是刚开始一直困扰我的难点,可能是我上课不专心没有听到老师的讲解.同时,我在课本找不到对索引的详细解析。因此,我通过互联网详细了解了它的概念、功能、类型以及怎样创建,使课程设计顺利进行下去。
这次课程设计能够完满完成,最主要是因为老师的悉心教导。如果没有老师平时为我打下坚实的基础和热情地帮助我解决遇到的各种问题,我是无法完成这次课程设计的。所以,我在这里衷心地感谢老师,谢谢老师对我们的悉心教导!
展开阅读全文