图书馆管理系统数据库设计精选.docx
《图书馆管理系统数据库设计精选.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统数据库设计精选.docx(22页珍藏版)》请在冰豆网上搜索。
![图书馆管理系统数据库设计精选.docx](https://file1.bdocx.com/fileroot1/2023-1/26/1e9d6182-9207-4520-ae02-7a960e139eb0/1e9d6182-9207-4520-ae02-7a960e139eb01.gif)
图书馆管理系统数据库设计精选
图书馆管理系统数据库设计
一、需求分析
图书馆管理系统应该能够提供所有借阅者的详细信息,以及馆内库存的详细情况,对借书和还书两大功能进行合理的操作并登记。
图书馆管理系统的主要任务是建立详尽的借阅信息,以及馆内的书种及对应书刊的记录,并对借阅者和其借阅的书籍进行登记。
在不同的图书馆之间,图书管理系统会存在一定的差异。
具体功能模块及描述
1、安全性管理:
给每个管理员一个用户名和密码,以登录图书馆管理系统,便于身份验证,管理员可以拥有最高权限对数据库进行所有操作。
同样拥有一个用户名和密码,但普通用户只能进行查询操作,看个人信息和图书馆中图书信息不可修改它们。
(1)管理员:
增加、删除、查询、修改图书信息;
增加、删除、查询、修改读者信息;
图书借出、图书归还、逾期还书处理、图书注销
(2)读者:
查询图书信息、查看借书情况、查询个人信息、历史借书情况、超期还书警告。
2、读者信息管理:
该功能模块用于管理相关的读者信息,包括的子功能模块如下图所示
图1—1读者信息功能模块
“读者类型”用于设置读者的类型及相关的信息,内容包括读者的身份、可借册数,可续借次数等。
“读者档案管理”用于设置读者相关的信息,内容包括编号、姓名、身份、读者性别、联系方式、登记日期、有效期至、违规次数、现借图书数、是否挂失。
“借书证挂失与恢复”用于挂失和恢复读者的借书证,挂失后该编号的读者不能再借书。
3、图书管理:
该功能模块用于管理图书相关的信息包含的功能模块如下图所示
图1—2“图书管理”功能模块
“图书基本信息设置”用于设置图书的类型及相关的信息,内容包括ISBN、书名、版次、类型、作者、出版社、价格、现存量、库存总量。
“图书档案管理”用于设置图书相关信息,内容包括编号、ISBN、入库时间。
“图书征订”用于订购新图书,内容包括征订编号、ISBN、订购数量、订购日期。
“图书注销”用于注销图书,被注销的图书不可以再借出,并且应将图书信息进行修改。
“图书查看”用于查看某本书的情况。
“图书盘点”输出图书的在库清单供盘点使用。
4、图书流通管理:
此功能模块用于管理图书流通环节的相关的操作,包括如下图所示的功能模块。
图1—3“图书流通管理”功能模块
“图书借阅”用于登记读者借阅图书的记录并减少图书在库的库存,登记内容包括借阅编号、图书编号、读者编号、借阅时间、应还时间、续借次数、图书状态等。
图书馆管理员作为借阅者的代操纵借书和还书者。
借书时只要输入借阅的书刊编号就可以,然后输入借阅者的借阅卡号,完成后提交,系统验证借阅者是否有效,若有效借阅请求被接收并处理,系统将库存中图书数量减一,同时将读者信息中借书量加一。
“图书归还”用于登记读者归还图书的记录并增加图书在库的库存,登记内容包括归还编号、图书编号、读者编号、归还时间等。
系统查询借阅此书的人的信息以及该书被借日期判断是否过期,若过期将进行罚款,并将该书刊的借阅记录改为已还。
“图书丢失”用于报失图书,内容包括丢失编号、图书编号、读者编号、赔偿金额、操作时间等。
“图书罚款”用于对图书超期、丢失等情况的罚款管理,内容包括罚款编号、图书编号、读者编号、罚款日期、罚款金额、是否交款、备注等。
系统总流程图
系统流程图如图1—4所示:
图1—4系统总流程图
二、概念模型设计
根据以上需求分析,一个基本的图书馆管理系统数据库大致包括10个表,分别存放相应子功能模块的数据信息,期中“读者信息”和“图书信息”表是关键的表,用于存放图书馆读者的信息和文献的信息,图书馆管理系统实际上就是对读者和文献的管理。
其他涉及读者信息和文献信息的表,都只是记录相应的编号,并根据作为外键的“编号”字段相对应。
数据库要表述的信息有:
(1)读者类型
(2)读者信息(3)图书基本信息(4)图书信息(5)图书征订(6)图书借阅(7)图书归还(8)图书丢失(9)图书罚款(10)图书注销
各个主要实体的属性的E-R图
各实体及属性图如图3—1所示:
图2—1各实体及属性
各实体及其联系的E-R图
图2—2各实体及其联系图
三、逻辑设计
一般逻辑模型设计
3.1.1由ERD导出一般关系模型的四条原则为
原则1(实体转换为关系模式):
ERD中每个独立的实体转换为一个关系模式,实体的属性组成关系的属性,实体的主标识转换成关系的主码。
原则2(从实体及其主从联系转换为关系模式):
ERD中一个从实体及其主从联系转换为一个关系,从实体的属性及其主实体关系的属性组成的属性,其主实体关系的主码,在主从关系联系为一对多联系时还要加上可把同一主实体个体所对应的从实体个体区分开来的,从实体的一组属性,作为该关系的主码。
对子类实体可作类似一对一联系的从实体的转换。
原则3(一对多联系在关系模式中的表示):
ERD中的一个一对多联系通过在其“多”实体关系上增加“1”实体关系的主码(作为外码)和联系本身的属性来表示。
原则4(多对多联系转换为关系):
ERD中的一个多对多联系转换为一个关系,其被联系实体关系的主码和该联系本身的属性一起组成的属性,被联系关系的主码组成该关系的复合主码。
3.1.2读者类型的关系模式
读者类型(身份、可借册数、可续借册数、可借时间)
其中身份是本表的主键
3.1.3图书基本信息的关系模式
图书基本信息(ISBN、书名、版次、类型、作者、出版社、价格、现存量、库存总量)
其中ISBN号是主键
3.1.4读者信息的关系模式
读者信息(编号、姓名、身份、读者性别、联系方式、登记日期、有效期至、违规次数、现借图书数、是否挂失)
其中编号是主码,身份是外码
3.1.5图书信息的关系模式
图书信息(编号、ISBN、入库时间)
其中编号是主码,ISBN号是外码
3.1.6图书征订的关系模式
图书征订(征订编号、类型、征订数量、征订日期)
其中征订编号是主码,类型是外码
3.1.7图书借阅的关系模式
图书借阅(借阅编号、图书编号、读者编号、借阅时间、应还时间、续借次数、图书状态)
其中借阅编号是主码,图书编号和读者编号是外码
3.1.8图书归还的关系模式
图书归还(归还编号、图书编号、读者编号、归还时间)
其中归还编号是本表的主码,图书编号和读者编号是外码
3.1.9图书丢失的关系模式
图书丢失(丢失编号、图书编号、读者编号、偿还金额、操作时间)
其中丢失编号是主码,图书编号和读者编号是外码
图书罚款的关系模式
图书罚款(罚款编号、图书编号、读者编号、罚款日期、罚款金额、是否交款、备注)
其中罚款编号是主码,图书编号和读者编号是外码
图书注销的关系模式
图书注销(注销编号、图书编号、注销时间)
其中注销编号是主码,图书编号是外码
具体逻辑模型设计
3.2.1读者类型表
字段名
数据类型
能否为空
说明
身份
char(20)
notnull
primarykey
可借册数
int
notnull
可续借次数
int
notnull
可借时间
char(10)
notnull
3.2.2图书基本信息表
字段名
数据类型
能否为空
说明
ISBN
char(20)
notnull
primarykey
书名
char(20)
notnull
版次
char(20)
notnull
类型
char(20)
notnull
作者
char(20)
notnull
出版社
char(20)
notnull
价格
float
notnull
现存量
int
notnull
库存总量
int
notnull
3.2.3读者信息表
字段名
数据类型
能否为空
说明
编号
char(20)
notnull
primarykey
姓名
char(20),
notnull
身份
char(20)
notnull
foreignkey(身份)references读者类型(身份)
性别
char(8)
notnull
check(性别in('男','女')),
联系方式
char(12)
notnull
登记日期
datetime
notnull
有效期至
datetime
notnull
违规次数
int
notnull
借书数量
Int
notnull
是否挂失
char(8)
notnull
3.2.4图书信息表
字段名
数据类型
能否为空
说明
编号
char(20)
notnull
primarykey,
ISBN
char(20)
notnull
foreignkey(ISBN)references图书基本信息(ISBN))
入库时间
datetime
notnull
3.2.5图书借阅表
字段名
数据类型
能否为空
说明
借阅编号
char(20)
notnull
primarykey
图书编号
char(20)
notnull
foreignkey(图书编号)references图书信息(编号)
读者编号
char(20)
notnull
foreignkey(读者编号)references读者信息(编号)
借阅时间
datetime
notnull
应还时间
datetime
notnull
续借次数
int
notnull
3.2.6图书归还表
字段名
数据类型
能否为空
说明
归还编号
char(20)
notnull
primarykey
图书编号
char(20)
notnull
读者编号
char(20)
notnull
foreignkey(图书编号)references图书信息(编号)
归还时间
datetime
notnull
foreignkey(读者编号)references读者信息(编号)
3.2.7图书征订表
字段名
数据类型
能否为空
说明
征订编号
char(20)
notnull
primarykey
ISBN
char(20)
notnull
foreignkey(ISBN)references图书基本信息(ISBN)
征订数量
int
notnull
征订日期
int
notnull
3.2.8图书罚款表
字段名
数据类型
能否为空
说明
罚款编号
char(20)
notnull
图书编号
char(20)
notnull
Foreignkey(图书编号)references图书信息(编号)
读者编号
char(20)
notnull
Foreignkey(读者编号)references读者信息(编号)
罚款日期
datetime
notnull
罚款金额
char(10)
notnull
是否交款
char(8)
notnull
备注
char(10)
notnull
3.2.9图书丢失表
字段名
数据类型
能否为空
说明
丢失编号
char(20)
notnull
primarykey
图书编号
char(20)
notnull
读者编号
char(20)
notnull
偿还金额
char(10)
notnull
操作时间
datetime
notnull
3.2.10图书注销表
字段名
数据类型
能否为空
说明
注销编号
char(20)
notnull
primarykey
图书编号
char(20)
notnull
foreignkey(图书编号)references图书信息(编号)
注销时间
datetime
notnull
四、物理设计和保护设计
创建图书馆管理系统数据库和库中的各表
---------------------创建图书馆管理系统数据库
Createdatabase图书馆管理系统
go
use图书馆管理系统
go
----------------创建“读者类型”表
Createtable读者类型(
身份char(20)primarykey,
可借册数int,
可续借次数int,
可借时间char(10))
go
-----------------创建“图书基本信息”表
createtable图书基本信息(
ISBNchar(20)primarykey,
书名char(20),
版次char(20),
类型char(20),
作者char(20),
出版社char(20),
价格float,
现存量int,
库存总量int)
go
---------------创建读者信息表:
Createtable读者信息(
编号char(20)primarykey,
姓名char(20),
身份char(20),
性别char(8)check(性别in('男','女')),
联系方式char(12),
登记日期datetime,
有效期至datetime,
违规次数int,
借书数量int,
是否挂失char(8),
foreignkey(身份)references读者类型(身份)
)
Go
----------------------创建图书信息表
Createtable图书信息(编号char(20)primarykey,
ISBNchar(20),
入库时间datetime
foreignkey(ISBN)references图书基本信息(ISBN))
go
------------------创建“图书借阅”表
Createtable图书借阅(借阅编号char(20)primarykey,
图书编号char(20),
读者编号char(20),
借阅时间datetime,
应还时间datetime,
续借次数int,
Foreignkey(图书编号)references图书信息(编号),
Foreignkey(读者编号)references读者信息(编号)
)
go
----------------创建“图书归还”表
Createtable图书归还(归还编号char(20)primarykey,
图书编号char(20),
读者编号char(20),
归还时间datetime,
Foreignkey(图书编号)references图书信息(编号),
Foreignkey(读者编号)references读者信息(编号)
)
go
-----------------创建“图书征订”表
Createtable图书征订(征订编号char(20)primarykey,
ISBNchar(20),
征订数量int,
征订日期datetime,
foreignkey(ISBN)references图书基本信息(ISBN)
)
go
----------------创建“图书罚款”表
Createtable图书罚款(罚款编号char(20)primarykey,
图书编号char(20),
读者编号char(20),
罚款日期datetime,
罚款金额char(10),
是否交款char(8),
备注char(10),
Foreignkey(图书编号)references图书信息(编号),
Foreignkey(读者编号)references读者信息(编号)
)
Go
--------------创建“图书丢失”表
Createtable图书丢失(丢失编号char(20)primarykey,
图书编号char(20),
读者编号char(20),
偿还金额char(10),
操作时间datetime
Foreignkey(图书编号)references图书信息(编号),
Foreignkey(读者编号)references读者信息(编号)
)
Go
---------------创建“图书注销”表
Createtable图书注销(注销编号char(20)primarykey,
图书编号char(20),
注销时间datetime,
Foreignkey(图书编号)references图书信息(编号)
)
Go
向图书馆管理系统数据库中插入数据
---------------插入读者类型
Insertinto读者类型values('学生',5,2,'30天')
Insertinto读者类型values('教师',10,4,'60天')
--------------插入图书基本信息
Insertinto图书基本信息values('7-302-12266-0','经典案例开发','2006年1月第1版',
'计算机','马里杰','清华大学出版社',,2,2)
Insertinto图书基本信息values('7-302-12266-1','经典实例精讲','2006年1月第1版',
'计算机','夏邦贵','机械工业出版社',,3,3)
Insertinto图书基本信息values('7-302-12266-4','电工电子实训教程','2006年1月第1版',
'电工','向守兵','电子科技大学出版社',,2,2)
Insertinto图书基本信息values('7-302-12266-3','英语专业四级词汇','2006年1月第1版',
'英语','徐向珍','中国建材工业出版社',,2,2)
--------------插入读者信息
2006-09-10',
'2010-06-01',0,0,'否')
2006-09-10',
'2010-06-01',0,0,'否')
2006-09-10',
'2010-06-01',0,0,'否')
2000-01-20','2050-01-20',
0,0,'否')
Insertinto读者信息values('t000002','刘晨','教师','女','2222546','2006-02-01','2056-02-01',0,0,'否')
-----------------插入图书信息
Insertinto图书信息values('TP0000001','7-302-12266-0','2006-06-01')
Insertinto图书信息values('TP0000002','7-302-12266-0','2006-06-01')
Insertinto图书信息values('TP0000003','7-302-12266-1','2006-05-01')
Insertinto图书信息values('TP0000004','7-302-12266-1','2006-05-01')
Insertinto图书信息values('TP0000005','7-302-12266-1','2006-05-01')
Insertinto图书信息values('TM0000006','7-302-12266-4','2004-12-12')
Insertinto图书信息values('TM0000007','7-302-12266-4','2004-12-12')
Insertinto图书信息values('H0000008','7-302-12266-3','2006-05-20')
Insertinto图书信息values('H0000009','7-302-12266-3','2006-05-20')
Insertinto图书信息values('TP0000010','7-302-12266-0','2008-06-10')
各表之间的联系图如图4—1所示
图4—1各表之间的联系图
五、具体功能实现
5.1图书管理员的操作
5.1.1图书管理员对读者信息的管理
(1)插入新读者编号姓名:
朱康,身份:
学生,性别:
男,,联系方式2232365,登记日期2008-06-10,有效期至2010-06-01,违规次数0,借书数量0,是否挂失否
实现方法:
2008-06-10','2010-06-01',0,0,'否')
验证select*from读者信息
(2)读者信息的查询:
select姓名,借书数量,违规次数from读者信息
(3)修改读者信息:
实现方法update读者信息set联系方式='2232334'38'
验证select*from读者信息38'
5.1.2图书管理员对图书信息的管理
(1)插入图书信息编号:
TP0000010,ISBN=7-302-12266-0,入库时间=2008-06-10
实现方法:
Insertinto图书信息values('TP0000010','7-302-12266-0','2008-06-10')
验证:
select*from图书信息where编号='TP0000010'
(2)图书查阅用ISBN号查阅
select编号,图书信息.ISBN,书名,作者,库存总量,现存量
from图书信息,图书基本信息
where图书信息.ISBN=图书基本信息.ISBNand图书信息.ISBN='7-302-12266-0'
(3)图书信息修改将图书编号=TP0000010的图书入库时间改为2008-06-11
实现方法:
update图书信息set入库时间='2008-06-11'where编号='TP0000010'
验证:
select*from图书信息where编号='TP0000010'
(4)图书统计
Selectsum(现存量)现存总量
From图书基本信息
5.1.3图书管理员对图书借阅的管理
实现方法:
insertinto图书借阅values('0001','T38','2008-06-11','2008-07-11',0
’借出’)
验证方法:
select*from图书借阅where借阅编号='0001'
借出后此类图书现库存量减少一本,读者信息中借书量增加一本
实现方法:
update图书基本信息set现存量=现存量-1where图书基本信息.ISBN=(select图书基本信息.ISBN
from图书信息,图书基本