学校图书借阅管理系统数据库设计.docx
- 文档编号:9194606
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:13
- 大小:120.08KB
学校图书借阅管理系统数据库设计.docx
《学校图书借阅管理系统数据库设计.docx》由会员分享,可在线阅读,更多相关《学校图书借阅管理系统数据库设计.docx(13页珍藏版)》请在冰豆网上搜索。
学校图书借阅管理系统数据库设计
数据库课程设计报告
学校图书借阅管理系统
学生姓名:
郭晓东
学号:
2010508033
专业年级:
计算机科学与技术10级
指导教师:
朱东芹
数据库设计说明书
一、结构设计
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
图7
3、物理结构设计
Tb_reader读者表:
属性名
类型
备注
说明
readerid
Varchar(10)
主键
读者id
rname
Varchar(20)
不允许空
姓名
sex
Varchar
(2)
不允许空(‘男’or’女’)
性别
grade
Varchar
(1)
不允许空
年级
Profession
Varchar(20)
不允许空
专业
ifeffective
tinyint
不允许空(1of0)
是否有效
Varchar(20)
允许空
邮箱
Tb_manager管理员表:
属性名
类型
备注
说明
managerid
Varchar(10)
主键
管理员id
loginnane
Varchar(20)
不允许空
登录名
password
Varchar(20)
不允许空
密码
Tb_borrow借阅表:
属性名
类型
备注
说明
borrowid
int
主键(自增)
id
bookid
Varchar(10)
不允许空
书号
readerid
Varchar(10)
不允许空
读者号
managerid
Varchar(10)
不允许空
管理员号
borrowTime
Smalldatetime
不允许空
借书时间
backTime
Smalldatetime
允许空(backTime>=borrowtime)
还书时间
ifreborrow
tinyint
不允许空(1or0)
是否续借
Tb_book图书表:
属性名
类型
备注
说明
bookid
Varchar(10)
主键
书号
bname
Varchar(20)
不允许空
书名
type
Varchar(20)
允许空
类型
author
Varchar(20)
允许空
作者
price
float
允许空
价格
publish
Varchar(20)
允许空
出版社
quantity
Tinyint
不允许空
总数
remain
Tinyint
不允许空(remain<=quantity)
剩余
Tb_punishment超期处罚表:
属性名
类型
备注
说明
punishmentid
int
主键(自增)
id
readerid
Varchar(10)
不允许空
读者号
bookid
Varchar(10)
不允许空
书号
days
smallint
不允许空
超期天数
bmoney
float
不允许空
罚款金额
Tb_purview管理员权限设置表:
属性名
类型
备注
说明
managerid
Varchar(10)
主键
管理员号
systemset
tinyint
不允许空(1or0)
系统设置权限
readerset
tinyint
不允许空(1or0)
读者权限
bookset
tinyint
不允许空(1or0)
图书管理权限
borrowback
tinyint
不允许空(1or0)
图书借还权限
systemquery
tinyint
不允许空(1or0)
系统查询权限
4、关系模式
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,systemquery)
二、存储过程
创建存储过程,输入读者id查询出书名、借阅时间、归还时间、管理员id、是否续借情况
createprocedurep
@readerid_invarchar(10),
@bookid_invarchar(10),
@bname_outvarchar(20)output,
@borrowTime_outdatetimeoutput,
@backTime_outdatetimeoutput,
@managerid_outvarchar(10)output,
@ifreborrow_outtinyintoutput
as
select@bname_out=bname,@borrowTime_out=borrowTime,@backTime_out=backTime,@managerid_out=managerid,@ifreborrow_out=ifreborrow
fromtb_book,tb_borrow
wheretb_borrow.readerid=@readerid_inandtb_borrow.bookid=@bookid_inandtb_book.bookid=tb_borrow.bookid
存储过程使用
declare@readerid_invarchar(10),
@bookid_invarchar(10),
@bname_outvarchar(20),
@borrowTime_outdatetime,
@backTime_outdatetime,
@managerid_outvarchar(10),
@ifreborrow_outtinyint
select@readerid_in='2010508033'
select@bookid_in='005'
execp@readerid_in,@bookid_in,@bname_outoutput,@borrowTime_outoutput,@backTime_outoutput,@managerid_outoutput,@ifreborrow_outoutput
print'书名:
'+@bname_out
print'借书时间:
'+rtrim(@borrowTime_out)
print'还书时间:
'+rtrim(@backTime_out)
print'管理员编号:
'+@managerid_out
print'是否续借:
'+rtrim(@ifreborrow_out)
三、触发器
1、借书触发器,当借书时,图书表中的remain(剩余图书)自动减一。
createtriggert_borrow
ontb_borrowforinsert
as
declare@bookid_readvarchar(10)
select@bookid_read=bookidfrominserted
begin
updatetb_booksetremain=remain-1wherebookid=@bookid_read
End
2、还书触发器,当还书时,图书表中的remain自动加一。
createtriggert_back
ontb_borrowforupdate
asifupdate(backTime)
declare@bookid_readvarchar(10)
select@bookid_read=bookidfrominserted
begin
updatetb_booksetremain=remain+1wherebookid=@bookid_read
End
3、罚款触发器,当借阅图书超期时,自动在punishment表中添加罚款记录,记录罚款读者、书名、天数、金额,并且自动将reader表中的ifeffective置为0,是该读者不能再借书。
createtriggert_punish
ontb_borrowforupdate
as
ifupdate(backTime)
begin
declare@backTimedatetime,
@borrowTimedatetime,
@ifreborrowtinyint,
@daysint,
@days1int,
@bmoneyint,
@readeridvarchar(10),
@bookidvarchar(10)
select@backTime=backTimefrominserted
select@borrowTime=borrowTimefrominserted
select@ifreborrow=ifreborrowfrominserted
select@days=convert(int,@backTime)-convert(int,@borrowTime)
select@readerid=readeridfrominserted
select@bookid=bookidfrominserted
if@days>30
begin
if@ifreborrow=1
begin
if@days>60
begin
select@days1=@days-60
select@bmoney=@days1*0.1
insertintotb_punishment(readerid,bookid,days,bmoney)values(@readerid,@bookid,@days1,@bmoney)
updatetb_readersetifeffective=0wherereaderid=@readerid
end
end
if@ifreborrow=0
begin
select@days1=@days-30
select@bmoney=@days1*0.1
insertintotb_punishment(readerid,bookid,days,bmoney)values(@readerid,@bookid,@days1,@bmoney)
updatetb_readersetifeffective=0wherereaderid=@readerid
end
end
end
4、读者是否有效触发器,当读者借书时,检查reader表中的ifeffective属性,若为0则说明有超期罚款,不能借书。
createtriggert_ifcanborrow
ontb_borrowforinsert
as
declare@readeridvarchar(10),
@ifeffectivetinyint
select@readerid=readeridfrominserted
select@ifeffective=ifeffectivefromtb_readerwherereaderid=@readerid
if@ifeffective=0
begin
print'您有超期罚款!
'
rollbacktransaction
end
四、视图脚本
1、创建视图查询各种图书的书号、书名、总数和在册数。
createviewview_query
asselectbookid,bname,quantity,remainfromtb_book
2、创建视图查询读者的超期罚款情况,其中包括读者号,读者姓名,罚款书名,罚款金额。
createviewview_reader
asselecttb_punishment.readerid,rname,bname,bmoneyfromtb_punishment,tb_book,tb_readerwheretb_punishment.bookid=tb_book.bookidandtb_punishment.readerid=tb_reader.readerid
五、数据库恢复与备份
数据库的完全备份
usedb_library
go
backupdatabasedb_library
todisk='H:
\LibarySystem\backup\f_db_library'
withinit
Go
数据库的恢复
usedb_library
go
backupdatabasedb_library
todisk='H:
\LibarySystem\backup\f_db_library'
withinit
Go
数据库差异备份
usedb_library
go
backupdatabasedb_library
todisk='H:
\LibarySystem\backup\d_db_library'
withdifferential
Go
数据库的恢复
usemaster
go
restoredatabasedb_library
fromdisk='H:
\LibarySystem\backup\f_db_library'
withnorecovery
go
restoredatabasedb_library
fromdisk='H:
\LibarySystem\backup\d_db_library'
withreplace
go
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学校 图书 借阅 管理 系统 数据库 设计