学校图书借阅管理系统数据库设计.docx
- 文档编号:11975500
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:13
- 大小:71.46KB
学校图书借阅管理系统数据库设计.docx
《学校图书借阅管理系统数据库设计.docx》由会员分享,可在线阅读,更多相关《学校图书借阅管理系统数据库设计.docx(13页珍藏版)》请在冰豆网上搜索。
学校图书借阅管理系统数据库设计
数据 库课 程 设计报 告
学校 图书 借 阅 管理系 统
学生姓名:
郭 晓 东
学号:
2010508033
专业年级:
计算机科学与技术 10 级
指导教师:
朱 东 芹
一、结构设计...................................................................................................................................3
1、逻辑结构设计.....................................................................................................................3
2、 关系图...............................................................................................................................5
3、物理结构设计.....................................................................................................................5
4、 关系模式...........................................................................................................................7
二、存储过程...................................................................................................................................7
三、触发器.......................................................................................................................................9
四、视图脚本.................................................................................................................................12
五、数据库恢复与备份.................................................................................................................12
数据库设计说明书
一、结构设计
1、逻辑结构设计
(1)总体 E-R 图如图 1
图 1
读者 E-R 图如图 2
图 2
图书 E-R 图如图 3
图 3
权限设置 E-R 图如图 4
图 4
权限设置 E-R 图如图 5
图 5
权限设置 E-R 图如图 6
图 6
2、关系图
关系图如图 7
属性名
类型
备注
说明
borrowid
int
主键(自增)
id
bookid
Varchar(10)
不允许空
书号
readerid
Varchar(10)
不允许空
读者号
managerid
Varchar(10)
不允许空
管理员号
borrowTime
Smalldatetime
不允许空
借书时间
backTime
Smalldatetime
允许空
(backTime>=borrowtime)
还书时间
ifreborrow
tinyint
不允许空(1 or 0)
是否续借
属性名
类型
备注
说明
readerid
Varchar(10)
主键
读者 id
rname
Varchar(20)
不允许空
姓名
sex
Varchar
(2)
不允许空(‘男’ or’ 女’)
性别
grade
Varchar
(1)
不允许空
年级
Profession
Varchar(20)
不允许空
专业
ifeffective
tinyint
不允许空(1 of 0)
是否有效
Varchar(20)
允许空
邮箱
属性名
类型
备注
说明
managerid
Varchar(10)
主键
管理员 id
loginnane
Varchar(20)
不允许空
登录名
password
Varchar(20)
不允许空
密码
图 7
3、物理结构设计
属性名类型备注说明
bookid
Varchar(10)
主键
书号
bname
Varchar(20)
不允许空
书名
type
Varchar(20)
允许空
类型
author
Varchar(20)
允许空
作者
price
float
允许空
价格
publish
Varchar(20)
允许空
出版社
quantity
Tinyint
不允许空
总数
remain
Tinyint
不允许空
(remain<=quantity)
剩余
属性名
类型
备注
说明
managerid
Varchar(10)
主键
管理员号
systemset
tinyint
不允许空(1 or 0)
系统设置权限
readerset
tinyint
不允许空(1 or 0)
读者权限
bookset
tinyint
不允许空(1 or 0)
图书管理权限
borrowback
tinyint
不允许空(1 or 0)
图书借还权限
systemquery
tinyint
不允许空(1 or 0)
系统查询权限
属性名
类型
备注
说明
punishmentid
int
主键(自增)
id
readerid
Varchar(10)
不允许空
读者号
bookid
Varchar(10)
不允许空
书号
days
smallint
不允许空
超期天数
bmoney
float
不允许空
罚款金额
Tb_reader(readerid,rname,sex,grade,profession,email,ifeffective)
Tb_borrow(borrowid,readerid,bookid,managerid,borrowTime,backTime,
ifreborrow)
Tb_manager(managerid,loginname,password)
Tb_book(bookid,bname,type,author,publish,price,quantity,remain)
Tb_punishment(punishmentid,readerid,bookid,days,bmoney)
Tb_purview(managerid,systemset,readerset,bookset,borrowback,syste
mquery)
二、存储过程
创建存储过程,输入读者 id 查询出书名、借阅时间、归还时间、管理员 id、
是否续借情况
create procedure p
@readerid_in varchar(10),
@bookid_in varchar(10),
@bname_out varchar(20) output,
@borrowTime_out datetime output,
@backTime_out datetime output,
@managerid_out varchar(10) output,
@ifreborrow_out tinyint output
as
select
@bname_out=bname,@borrowTime_out=borrowTime,@backTime_out
=backTime,@managerid_out=managerid,@ifreborrow_out=ifrebo
rrow
from tb_book,tb_borrow
where tb_borrow.readerid=@readerid_in and
tb_borrow.bookid=@bookid_in and
tb_book.bookid=tb_borrow.bookid
存储过程使用
declare @readerid_in varchar(10),
@bookid_in varchar(10),
@bname_out varchar(20),
@borrowTime_out datetime,
@backTime_out datetime,
@managerid_out varchar(10),
@ifreborrow_out tinyint
select @readerid_in='2010508033'
select @bookid_in='005'
exec p @readerid_in,@bookid_in,@bname_out
output,@borrowTime_out output,@backTime_out
output,@managerid_out output,@ifreborrow_out output
print '书名:
'+@bname_out
print '借书时间:
'+rtrim(@borrowTime_out)
print '还书时间:
'+rtrim(@backTime_out)
print '管理员编号:
'+@managerid_out
print '是否续借:
'+rtrim(@ifreborrow_out)
三、触发器
1、借书触发器,当借书时,图书表中的 remain(剩余图书)自动减一。
create trigger t_borrow
on tb_borrow for insert
as
declare @bookid_read varchar(10)
select @bookid_read=bookid from inserted
begin
update tb_book set remain=remain-1 where
bookid=@bookid_read
End
2、还书触发器,当还书时,图书表中的 remain 自动加一。
create trigger t_back
on tb_borrow for update
as if update(backTime)
declare @bookid_read varchar(10)
select @bookid_read=bookid from inserted
begin
update tb_book set remain=remain+1 where
bookid=@bookid_read
End
3、罚款触发器,当借阅图书超期时,自动在 punishment 表中添加罚款记录,
记录罚款读者、书名、天数、金额,并且自动将 reader 表中的 ifeffective 置
为 0,是该读者不能再借书。
create trigger t_punish
on tb_borrow for update
as
if update(backTime)
begin
declare @backTime datetime,
@borrowTime datetime,
@ifreborrow tinyint,
@days int,
@days1 int,
@bmoney int,
@readerid varchar(10),
@bookid varchar(10)
select @backTime=backTime from inserted
select @borrowTime=borrowTime from inserted
select @ifreborrow=ifreborrow from inserted
select @days=convert(int,@backTime)-
convert(int,@borrowTime)
select @readerid=readerid from inserted
select @bookid=bookid from inserted
if @days>30
begin
if @ifreborrow=1
begin
if @days>60
begin
select @days1=@days-60
select @bmoney=@days1*0.1
insert into
tb_punishment(readerid,bookid,days,bmoney)
values(@readerid,@bookid,@days1,@bmoney)
update tb_reader set ifeffective=0 where
readerid=@readerid
end
end
if @ifreborrow=0
begin
select @days1=@days-30
select @bmoney=@days1*0.1
insert into
tb_punishment(readerid,bookid,days,bmoney)
values(@readerid,@bookid,@days1,@bmoney)
update tb_reader set ifeffective=0 where
readerid=@readerid
end
end
end
4、读者是否有效触发器,当读者借书时,检查 reader 表中的 ifeffective 属
性,若为 0 则说明有超期罚款,不能借书。
create trigger t_ifcanborrow
on tb_borrow for insert
as
declare @readerid varchar(10),
@ifeffective tinyint
select @readerid=readerid from inserted
select @ifeffective=ifeffective from tb_reader where
readerid=@readerid
if @ifeffective=0
begin
print '您有超期罚款!
'
rollback transaction
end
四、视图脚本
1、创建视图查询各种图书的书号、书名、总数和在册数。
create view view_query
as select bookid,bname,quantity,remain from tb_book
2、创建视图查询读者的超期罚款情况,其中包括读者号,读者姓名,罚款书名,
罚款金额。
create view view_reader
as select tb_punishment.readerid,rname,bname,bmoney from
tb_punishment,tb_book,tb_reader where
tb_punishment.bookid=tb_book.bookid and
tb_punishment.readerid=tb_reader.readerid
五、数据库恢复与备份
数据库的完全备份
use db_library
go
backup database db_library
todisk='H:
\LibarySystem\backup\f_db_library'
with init
Go
数据库的恢复
use db_library
go
backup database db_library
todisk='H:
\LibarySystem\backup\f_db_library'
with init
Go
数据库差异备份
use db_library
go
backup database db_library
to disk='H:
\LibarySystem\backup\d_db_library'
with differential
Go
数据库的恢复
use master
go
restore database db_library
from disk='H:
\LibarySystem\backup\f_db_library'
with norecovery
go
restore database db_library
from disk='H:
\LibarySystem\backup\d_db_library'
with replace
go
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学校 图书 借阅 管理 系统 数据库 设计