数据库管理系统:图书管理系统数据库设计
疯狂代码 http://CrazyCoder.cn/ ĵ:http:/CrazyCoder.cn/DataBase/Article17460.html
1、摘要:
个简单图书管理系统包括图书馆内书籍信息、学校在校学生信息以及学生借阅信息此系统功能分为面向学生和
面向管理员两部分其中学生可以进行借阅、续借、归还和查询书籍等操作管理员可以完成书籍和学生增加删除
和修改以及对学生借阅、续借、归还确认
2、需求分析
针对般图书管理信息系统需求通过对图书管理工作过程内容和数据流程分析设计如下面所示数据项:
Ø读者信息
属性:读者学号读者姓名读者性别联系电话所在系生效日期失效日期违章状况累计借书备注
主键:读者学号
Ø书籍信息
属性:ISBN书名作者出版社出版日期介绍备注
主键:ISBN
Ø管理员信息
属性:工作号姓名性别电话家庭住址备注
主键:工作号
2.1数据流程
通过对系统调查和可行性分析画出系统数据流程图:
2.1.1读者
学生对图书管理系统要求有:
Ø能按各种方式(比如书名、编号、作者)查询图书馆藏书情况
Ø能够方便地借阅图书、续借图书、归还图书
Ø能够查询自己基本资料、图书情况
Ø能够熟悉图书管理系统使用
读者进入系统工作流程图为:
注册
查询
修改信息
借阅续借
图书
归还
注销
2.1.2图书管理员
他们对图书管理系统要求有:
1.能方便对图书进行录入登记注销陈旧书籍
2.能够方便地对新生进行登记或注销已经毕业学生信息(基本信息借阅信息)
3.能够随时发布些诸如各学院学生借阅图书超期情况、馆内藏书情况、借情况等信息以便各学院能够随时获知
本院学生些借书信息
图书管理员工作流程图为:
注册
录入图书
录入新生
注销图书
注销学生
注销
修改个人信息
超期处理
3、概念模型设计
数据库需要表述信息有以下几种:
(1)读者信息
(2)书籍信息
(3)管理员信息
(4)读者和书籍的间关系(借阅关系E-R图)
(5)管理员和书籍的间关系(管理员_书籍E-R图)
(6)管理员和学生的间关系(管理员_学生E-R图)
3.1管理员和读者的间关系3.3管理员和书刊的间关系
3.3读者和书籍的间关系(借阅 3元关系)
4、逻辑设计
从理论‘E/R模型’到理论‘关系模型’整理转换通过E/R模型到关系模型转化可以得到如下关系模式:
借阅关系
属性:工作号读者学号ISBN是否续借借书日期还书日期备注
主键:工作号读者学号ISBN
管理员_书籍关系
属性:工作号ISBN添加时间是否在馆
主键:工作号ISBN
管理员_学生关系
属性:工作号读者学号确认借还
主键:工作号读者学号
5、数据库逻辑结构
5.1图书信息表 [Page]
字段名称数据类型是否可为空
ISBN(key)varchar(20)否
书名varchar(50)否
作者varchar(12)否
出版社varchar(50)是
出版日期datetime是
介绍varchar(200)是
备注varchar(200)是
5.2读者信息表
字段名称数据类型是否可为空
读者学号(key)varchar(12)否
读者姓名varchar(10)否
读者性别varchar(2)否
联系电话varchar(10)是
所在系varchar(12)否
生效时间datatime是
失效时间datatime是
违章状况varchar(2)是
累计借书是
备注varchar(100)是
5.3管理员信息表
字段名称数据类型是否可为空
工作号(key)varchar(12)否
姓名varchar(12)否
性别varchar(2)否
电话varchar(12)是
住址varchar(12)是
备注varchar(100)是
5.4借阅表
字段名称数据类型是否可为空
工作号char(10)否
ISBNchar(10)否
读者学号char(10)否
借书日期datetime否
还书日期datetime否
是否续借char(4)否
备注varchar(100)是
5.5管理员_书籍
字段名称数据类型是否可为空
工作号char(10)否
ISBNchar(10)否
添加时间datatime是
是否在馆char(14)是
5.6管理员_学生
字段名称数据类型是否可为空
工作号char(10)否
读者学号char(10)否
借还确认char(4)否
6、物理设计
从理论‘关系模型’到实现\\实施‘数据库建立’物理文件安排和建立索引
6.1建立索引
为了提高在表中搜索元组速度在实际实现时候应该基于键码建立索引是各表中建立索引表项:
(1)读者信息(读者学号)
(2)书籍信息(ISBN)
(3)管理员信息(工作号)
(4)借阅(工作号读者学号ISBN)
(5)管理员_书籍(工作号ISBN)
(6)管理员_学生(工作号读者学号)
6.2用SQL实现设计
实现该设计环境为Windows2000Perfessinal+MSSQLServer2000.0
6.2.1建立图书信息表
createtable图书
(ISBNvarchar(20)notnullprimarykey,
书名varchar(50)notnull,
作者varchar(12)notnull,
出版社varchar(50),
出版日期datetime,
介绍varchar(200),
备注varchar(200),)
6.2.2建立读者信息表
createtable读者
(读者学号varchar(12)notnullprimarykey,
读者姓名varchar(10)notnull,
读者性别varchar(2)notnull,
联系电话varchar(12),
所在系varchar(20)notnull,
生效日期datetime,
失效日期datetime,
违章状态char(2), [Page]
累计借书,
备注varchar(100),)
6.2.3建立管理员信息表
createtable管理员
(工作号varchar(12)notnullprimarykey,
姓名varchar(12)notnull,
性别varchar(2)notnull,
电话varchar(12),
家庭住址varchar(50),
备注varchar(100))
6.2.4建立借阅表
createtable借阅
(工作号char(10)notnull,
ISBNchar(10)notnull,
读者学号char(10)notnull,
借书日期datetimenotnull,
还书日期datetimenotnull,
是否续借char(4)notnull,
备注varchar(100))
6.2.5建立管理员_书籍表
createtable管理员_书籍
(工作号char(10)notnull,
ISBNchar(10)notnull,
添加时间datetime,
是否在馆char(4))
6.2.6建立管理员_学生表
createtable管理员_学生
(工作号char(10)notnull,
读者学号char(10)notnull,
ISBNchar(10)notnull,
借还确认char(4)notnull)
6.2.7建立索引
CREATEUNIQUEINDEX图书索引ON图书(ISBN)
CREATEUNIQUEINDEX读者索引ON读者(读者学号)
CREATEUNIQUEINDEX管理员索引ON读者(工作号)
CREATEUNIQUEINDEX借阅索引ON借阅(工作号,读者学号,ISBN)
CREATEUNIQUEINDEX管理员_书籍索引ON管理员_书籍(工作号,ISBN读者学号)
CREATEUNIQUEINDEX管理员_学生ON管理员_学生(工作号,读者学号)
6.2.8定义视图
(1)读者表视图
CREATEVIEW读者视图
AS
SELECT*
FROM读者
(2)图书表视图
CREATEVIEW图书视图
AS
SELECT*
FROM图书
(3)管理员表视图
CREATEVIEW管理员视图
AS
SELECT*
FROM管理员者
6.2.9管理员操作
(1)注册(register)
INSERTINTO管理员(工作号,姓名,性别,电话,家庭住址,备注) [Page]
VALUES(#工作号,#姓名,#性别,#电话,#家庭住址,#备注)
介绍说明:在登记操作后,管理员得到个唯工作号,可以根据这个工作号采查询和修改数据
(2)注销(unregister)
DELETE
FROMProvider
WHERE(工作号=#工作号);
(3)修改个人信息(update)
UPdate管理员
Set(工作号=#工作号,姓名=#姓名,性别=#性别,电话=#电话,家庭住址=#家庭住址,备注=#备注)
WHERE(工作号=#工作号)
(4)增加书籍(addbooks)
INSERTINTO图书(ISBN,书名,作者,出版社,出版日期,介绍,备注)
VALUES(#ISBN,#书名,#作者,#出版社,#出版日期,#介绍,#备注)INSERTINTO管理员_书籍表(工作号,ISBN,添加
时间,是否在馆)
VALUES(#工作号,#ISBN,#添加时间,#是否在馆)
(5)删除书籍(deletebooks)
DELETE图书
WHERE(ISBN=#ISBN)
(6)修改书籍(updatebooks)
UPDATE图书(书名=#书名,作者=#作者,出版社=#出版社,出版日期=
#出版日期,介绍=#介绍,备注=#备注)
WHERE(ISBN=#ISBN)
6.2.10读者操作
(1)注册(register)
INSERTINTO读者(读者学号,读者姓名,读者性别,联系电话,所在系,
生效日期,失效日期,违章状况,累计借书,备注)
VALUES(#读者学号,#读者姓名,#读者性别,#联系电话,#所在系,
#生效日期,#失效日期,#违章状况,#累计借书,#备注)
介绍说明:在登记操作后,读者得到个唯ID,可以根据这个ID来查询和修改自己信息
(2)注销(unregister)
DELETE读者
WHERE(读者学号=#读者学号)
(3)修改个人信息(update)
UPDATE读者Set(读者姓名=#读者姓名,联系电话=#联系电话,
所在系=#所在系,生效日期=#生效日期,失效日期=#失效日期,
违章状况=#违章状况,累计借书=#累计借书,备注=#备注)
WHERE(读者学号=#读者学号)
(4)查询(select)
SELECTISBN,书名,作者,出版社
FROM图书
WHEREISBN=#ISBNOR书名=#书名
6.2.11管理员对借阅关系操作
(1)插入读者信息(insert)
INSERTINTO借阅(工作号,读者学号,ISBN,是否续借,借书日期,还书日期,备注)
VALUES(#工作号,#读者学号,#ISBN,#是否续借,#借书日期,
#还书日期,#备注)
(2)更新信息(update)
①更新借出信息
UPDATE借阅
SET(借书日期=#借书日期,还书日期=借书日期+30,是否续借=0)
WHERE(工作号=#工作号AND读者学号=#读者学号ANDISBN=#ISBN)
UPDATE管理员_图书
SET(是否在馆=0)
WHERE(ISBN=#ISBN)
UPDATA学生
SET(累积借书=累积借书+1)
WHERE(读者学号=#读者学号)