数据库大作业图书管理系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

图书管理系统
需求分析
信息需求:
为了加强图书的管理,设计图书管理系统,方便用户借阅、管理员管理,减少管理员的工作量。

1)主要信息需求
1.图书信息:简介、出版日期、出版社、作者、书名、书号
2.读者信息:姓名、性别、读者编号、所在系、联系电话
3.借阅信息:借书日期、还书日期、工作号、书号、是否续借、读者编号
4.管理员信息:姓名、性别、电话、工资、工作号
5.管理_书籍信息:工作号、书号、添加时间、是否在馆
6.管理_读者信息:工作号、读者编号、借还确认、违章情况、累计借书
2)信息间的主要联系
1.一个读者可以借阅多本书籍(1:m)
2.一本图书可以被一个读者借阅(1:1)
3.一个图书管理员可以管理多个读者(1:n)
4.一个读者信息只能被一个图书管理员管理(1:1)
5.一本图书可以被多个图书管理员管理(1:n)
6.一个图书管理员可以管理多本图书(1:m)
处理需求:
1.借阅功能:可以方便地借阅图书、续借图书、归还图书
2.查询功能:按图书编号查找图书、按图书名称查找图书、按图书作者查找图书、能够按照自己的图书证编号查询自己的状态信息
3.读者注册功能:能够对新的读者进行登记,或注销读者的信息
4.图书录入功能:能够将新到的图书信息输入到系统的图书信息库中
5.统计功能:按图书编号统计书籍数量、按图书名称统计数量、按作者统计书籍数量 安全性需求
1.管理员的权限最高,可以查询、修改借阅关系表、管理员_书籍表、管理员_读者表 2.读者,可以查看图书基本信息、个人自己的借阅信息。

不可以对其中的信息进行添加、修改等操作。

完整性需求
1.在图书管理信息表中,书号、书名、作者、出版社、出版日期、简介输入信息的时候都有类型、长度要求。

书号、书名、作者不能为空,其中书号为主码
2.在读者信息表中,其中的各类信息都有类型、长度要求。

读者编号、读者姓名、读者性别、所在系不能为空,读者编号为主码
3.在管理员信息表中,其中的各类信息都有类型、长度要求。

工作号、姓名、性别不能为空,工作号为主码
4.在借阅关系表中,其中的各类信息都有类型、长度要求,且均不可为空。

工作号、书号为外码
5.在管理员_书籍表中,其中的各类信息都有类型、长度要求。

工作号、书号不能为空,且为外码
6.在管理员_读者表中,其中的各类信息都有类型、长度要求,均不可为空。

工作号、读者编号为外码
程序流程图
图1
读者借阅图书,系统查询图书是否在馆。

若已借出,显示借出;未借出进行下一步,图书管理员将书借出并登记相关信息。

数据流图
顶层数据流图
添加图书
图书信息 借出信息
借书
图书 还书 拒绝信息 修改信息 查询
图2 第0层数据流图
所借图书信息
借书
读 者

图 书 判断图书 是否在馆 图书管理员 管 理 所借图书
借 阅
图书管理系统
管理员 管理员
读 者 读者
借书
借书
拒绝借书
库存信息
借书信息 查询信息
还书 违章情况
图3
第一层数据流图
第一次借书
借书信息 借书
编号
存在
借出图书
借书累计过多、无库存
拒绝借出
库存信息
图4.借书的数据流图
还书
借书信息 库存信息
图5.还书的数据流图
查询要求
借书信息表 库存图书信息表
查询结果
图6.查询的数据流图
数据字典
1.数据项
数据项名 数据项含义说明 数据类型
长度 与其他数据项的逻辑关系 读者编号 读者相关信息 整型 10 决定要借阅的图书 读者姓名 读者相关信息 字符型 6 读者性别 读者相关信息 字符型 2 联系电话 读者相关信息 整型 7 所在系 读者相关信息 字符型 10 书名 图书相关信息 字符型 20 作者 图书相关信息 字符型 6 出版社 图书相关信息 字符型 20
管理员工作号 管理员相关信息 整型 10 管理图书的借还 管理员姓名 管理员相关信息
字符型
6
借书审核 还书审核 查询 读者编号
建 档 借书审核
修改图书信息 还书审核 修改图书信息 使用者 查询选择 读者信息
图书信息查询 图书统计查询 使用者
管理员性别管理员相关信息字符型 2
借书日期借书相关信息整型10
还书日期借书相关信息整型10
2.数据结构
数据结构名含义说明组成
图书信息表定义图书的相关信息简介、出版日期、出版社、
作者、书名、书号
读者信息表定义读者的相关信息姓名、性别、读者编号、
所在系、联系电话
管理员信息表定义管理员的相关信息姓名、性别、电话、工资、
工作号
借阅关系表定义借阅图书的相关信息借书日期、还书日期、工
作号、书号、是否续借、
读者编号
管理员_书籍信息表定义管理员与图书的有关信息工作号、书号、添加时间、
是否在馆
管理员_读者信息表定义管理员与学生的有关信息工作号、读者编号、借还
确认、违章情况、累计借

3.数据流
数据流名来源去向组成
借书读者、图书借书审核读者编号、书名、读者姓名、借书日期
还书图书、读者还书审核读者编号、书名、还书日期
4.数据存储
数据存储名组成
借书信息姓名、性别、读者编号、所在系、联系电话、管理员姓名
库存信息简介、出版日期、出版社、作者、书名、书号、是否在馆5.处理过程
处理过程名含义说明输入输出
借书过程查看图书是否被借出图书信息借阅信息
还书过程查看借阅图书的信息读者信息图书信息
概念结构设计
局部E-R图
1.读者—借阅—图书
一个读者可以借阅多本书籍(1:m)
一本图书可以被一个读者借阅(1:1)
姓名章数
读者编号
读者借阅
借书日期
图书
出版日期
作者
1 m
简介
联系电话
图1. 借阅关系E —R 图
2.管理员—管理—读者
一个图书管理员可以管理多个读者(1:n ) 一个读者信息只能被一个图书管理员管理(1:1)
图2. 管理员_读者关系E —R 图 3.管理员—管理—图书
一本图书可以被多个图书管理员管理(1:n) 一个图书管理员可以管理多本图书(1:m )
图3 管理员_图书关系E —R 图
全局E-R 图
所在系 性别
还书日期
出版社
书名
书号
累计借书
所在系
性别
姓名
章数
读 者 管理
借还确认
管理员
电 话
工作号
性别
姓名
n
1
累计借书
读者编号
工资
性别
作号
电话

管理员 管理
添加时间 是否在馆
图 书
出版日期
出版社 作者
书名
书号
n m 姓名
简介
所在系

姓名
违章数
读 者
借阅
借书日期
图 书
出版日期
出版社
作者
书名
书号
1
m
借书
读者编号
简介
还书日期
n ,m
m
联系电话 系电话
图4.系统全局E —R 图
逻辑概念设计
将E-R 图转化为关系模式
1. 读者(读者编号、读者姓名、读者性别、联系电话、所在系、违章情况、累计借书)
2. 图书(书号、书名、作者、出版社、出版日期、简介)
3. 管理员(工作号、姓名、性别、电话、工资)
4. 借阅(读者编号、书号、是否续借、借书日期、还书日期)
5. 管理员_图书(工作号、书号、添加时间、是否在馆)
6. 管理员_读者(工作号、读者编号、确认借还)
数据模型优化
将数据关系模式优化,最终达到第三范式。

优化后的关系模式:
1. 读者(读者编号、读者姓名、读者性别、联系电话、所在系、违章情况、累计借书)
2. 图书(书号、书名、作者、出版社、出版日期、简介)
3. 管理员(工作号、姓名、性别、电话、工资)
4. 借阅(读者编号、书号、是否续借、借书日期、还书日期)
5. 管理员_图书(工作号、书号、添加时间、是否在馆)
6. 管理员_读者(工作号、读者编号、确认借还)
物理概念设计
数据的存储结构
根据以上的逻辑概念设计,得出各类数据的存储结构 1.图书信息表 字段名称 数据类型
长度 约束 属性 书号 char 20 NOTNULL 主码 书名 char 50 NOTNULL 非主属性 作者 char 20 NOTNULL 非主属性 出版社 char 50 非主属性 出版日期 data 非主属性 简介 char 200 非主属性 2.读者信息表
字段名称 数据类型 长度 约束 属性 读者编号 char
20
NOTNULL
主码
管 理
管 理
确认借还
添加时间
是否在馆
管理员 1 n
电话 工资
工作号
管理员姓名
管理员性别
读者姓名char 10 NOTNULL 非主属性读者性别char 2 NOTNULL 非主属性联系电话char 10 非主属性所在系char 20 NOTNULL 非主属性违章情况char 2 非主属性累计借书int 非主属性3.管理员信息表
字段名称数据类型长度约束属性
工作号char 12 NOTNULL 主码
姓名char 20 NOTNULL 非主属性性别char 2 NOTNULL 非主属性电话char 12 非主属性工资char 12 非主属性4借阅关系表
字段名称数据类型长度约束属性
工作号char 12 NOTNULL 外码
书号char 20 NOTNULL外码
读者编号char 20 NOTNULL 非主属性借书日期data NOTNULL 非主属性还书日期data NOTNULL 非主属性是否续借char 4 NOTNULL 非主属性5管理员_图书表
字段名称数据类型长度约束属性
工作号char 12 NOTNULL 外码
书号char 20 NOTNULL 外码
添加时间data 非主属性是否在馆char 14 非主属性6.管理员_读者表
字段名称数据类型长度约束属性
工作号char 12 NOTNULL 外码
读者编号char 20 NOTNULL 外码
借还确认char 4 非主属性
数据库建立
建表
1.图书信息表BOOK
CREATE TABLE BOOK
( 书号 char(20) PRIMARY KEY NOTNULL ,
书名 char(50) NOTNULL ,
作者 char(20) NOTNULL ,
出版社 char(50)
出版日期 data ,
简介 char(200)
) ;
2.读者信息表STUDENT
CREATE TABLE STUDENT
( 读者编号 char(20) PRIMARY KEY NOTNULL , 读者姓名 char(10) NOTNULL ,
读者性别 char(2) NOTNULL ,
联系电话 char(10) ,
所在系 char(20) NOTNULL ,
违章情况 char(2) ,
借书累计 int
) ;
3.管理员信息表MANAGER
CREATE TABLE MANAGER
( 工作号 char(12) PRIMARY KEY NOTNULL , 姓名 char(20) NOTNULL ,
性别 char(2) NOTNULL ,
电话 char(12) ,
工资 char(12)
) ;
4.借阅关系表 R—B
CREATE TABLE R—B
( 工作号 char(12) NOTNULL ,
书号 char(20) NOTNULL ,
读者编号 char(20) NOTNULL ,
借书日期 data NOTNULL ,
还书日期 data NOTNULL ,
是否续借 char(4) NOTNULL,
PRIMARY KEY (书号,读者编号) ,
FOREIGN KEY (书号) REFERENCES (书号) ,
FOREIGN KEY (读者编号) REFERENCES (读者编号)
) ;
5.管理员_图书表M—B
CREATE TABLE M—B
( 工作号 char(12) NOTNULL ,
书号 char(20) NOTNULL ,
添加时间 data ,
是否在馆 char(14) ,
PRIMARY KEY (工作号,书号) ,
FOREIGN KEY (工作号) REFERENCES (工作号) ,
FOREIGN KEY (书号) REFERENCES (书号)
) ;
6.管理员_读者表 M—S
CREATE TABLE M—S
( 工作号 char(12) NOTNULL ,
读者编号 char(20) NOTNULL ,
借还确认 char(4) ,
PRIMARY KEY (工作号,读者编号) ,
FOREIGN KEY (工作号) REFERENCES (工作号) ,
FOREIGN KEY (读者编号) REFERENCES (读者编号)
)
权限
1.将图书信息查询权限授给读者S1
GRANT SELECT
ON TABLE BOOK
TO S1
2.将图书借阅表、管路员_图书表、管理员_读者表的查询和修改权限授给管理员M1 GRANT UPDATE,SELECT
ON TABLE R—B,M—B, M—S
TO M1
视图
性别为女的管理员信息表建立工资视图MANAGERWAGE
CREATE VIEW MANAGERWAGE
AS
SELECT 姓名,性别,工资
FROM MANAGER
WHERE 性别='女' ;
触发器
建立管理员工资不足1000元,自动改为1000元的触发器Insert_Or_Update_Wage
CREATE TRIGGER Insert_Or_Update_Wage
BEFORE INSERT OR UPDATE ON MANAGER
FOR EACH ROW
AS BEGIN
IF (new.Professinal='管理员' ) AND (new.工资< 1000) ) THEN
new.工资 : = 1000 ;
END IF ;
END ;
索引
1.在图书信息表BOOK建立唯一索引B-BOOKNAME
CREATE UNIQUE INDEX B-BOOKNAME ON BOOK(书名) ;
2.在读者信息表STUDENT建立唯一索引S-STUDENTNO
CREATE UNIQUE INDEX S-STUDENTNO ON STUDENT (读者编号 ASC) ;
3.在图书管理员表MANAGER建立唯一索引M-MANAGERNAME
CREATE UNIQUE INDEX M-MANAGERNAME ON MANAGER( 姓名) ;
数据库实施
数据库数据的载入和应用程序的编制调试
1.建立数据库的结构
创建数据库,建立数据库中所包含的各个基本表、视图、索引等。

利用SQL语句中的CREATE DATABASE、CREATE TABLR、CREATE VIEW、CREATE INDEX命令完成。


系统中需要用这些命令,建立图书信息表、读者信息表、管理员信息表、借阅关系表、管理员_书籍表、管理员_学生表、为性别为女的管理员信息表上建立工资视图、为管理员建立触发器工资不足700,自动改为700元、为表建立索引。

2.将原始数据装入数据库
原始数据一般都是分散的,而且他们的组织方式、结构和格式都与新设计的数据库系统中的数据有不同程度的区别。

必须将数据从各个地方抽出来,输入计算机,并进行分类转换,使他们的结构与新的系统数据库的结构一致,然后才能输入到计算机。

先输入少量的数据,等系统正常运行后将所有的原始数据装入到数据库。

如果仅仅插入几条,可以用INSERT语句。

如果为批量的数据,应设计数据输入子系统来进行数据的输入。

数据库的试运行
所有的程序模块都通过的调试以后,将他们联合起来进行调试,此过程
要测试程序的各功能是否正确、考察系统的性能是否符合用户的需要。

在数据的试运行过程中,应经常对数据库中的数据进行备份。

每天进行一次动态增量转储、每星期进行一次动态海量转储、每月进行一次静态海量。

数据库运行与维护
数据库的转储和恢复
DBA定期对数据库进行备份,将其转储到磁盘或其他磁盘上。

这样,万一数据库遭到破坏时可以及时地将其恢复。

数据库的安全性和完整性控制
随着时间的推移,数据库系统的应用环境会发生变化,DBA应根据实际情况调整数据库的安全性和完整性的要求。

数据库性能的监督、分析和改造
在数据库系统的运行过程中,DBA须密切关注系统的性能,监视系统的运行,并对监测数据进行分析,不断改进系统的性能。

数据库的重组织与重构造
在数据库系统的运行过程中,经常会对数据库进行插入、删除和修改等操作。

会使数据库的物理存储变坏,影响数据的存取效率和系统的性能。

DBA应负责对数据库重新进行组织,即按原设计要求重新安排数据的存储位置、回收垃圾、减少指针链等,以提高数据的存取效率和系统性能。

数据库系统的应用环境是不断变化的,常常会出现一些新的应用,也会消除一些旧的应用,导致新的实体的出现和旧实体的淘汰,同时原先实体的属性和实体间的联系也会发生变化。

此时需数据库重构造。

但重构造是十分有限的,若应用环境变化太大,应淘汰旧系统,设计新的数据库应用系统。

相关文档
最新文档