学校图书借阅管理系统数据库设计Word文档格式.docx
《学校图书借阅管理系统数据库设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《学校图书借阅管理系统数据库设计Word文档格式.docx(13页珍藏版)》请在冰点文库上搜索。
2、关系图
关系图如图7
图7
3、物理结构设计
Tb_reader读者表:
属性名
类型
备注
说明
readerid
Varchar(10)
主键
读者id
rname
Varchar(20)
不允许空
姓名
sex
Varchar
(2)
不允许空(‘男’or’女’)
性别
grade
Varchar
(1)
年级
Profession
专业
ifeffective
tinyint
不允许空(1of0)
是否有效
email
允许空
邮箱
Tb_manager管理员表:
managerid
管理员id
loginnane
登录名
password
密码
Tb_borrow借阅表:
borrowid
int
主键(自增)
id
bookid
书号
读者号
管理员号
borrowTime
Smalldatetime
借书时间
backTime
允许空(backTime>
=borrowtime)
还书时间
ifreborrow
不允许空(1or0)
是否续借
Tb_book图书表:
bname
书名
type
author
作者
price
float
价格
publish
出版社
quantity
Tinyint
总数
remain
不允许空(remain<
=quantity)
剩余
Tb_punishment超期处罚表:
punishmentid
days
smallint
超期天数
bmoney
罚款金额
Tb_purview管理员权限设置表:
systemset
系统设置权限
readerset
读者权限
bookset
图书管理权限
borrowback
图书借还权限
systemquery
系统查询权限
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
借书时间:
+rtrim(@borrowTime_out)
还书时间:
+rtrim(@backTime_out)
管理员编号:
+@managerid_out
是否续借:
+rtrim(@ifreborrow_out)
三、触发器
1、借书触发器,当借书时,图书表中的remain(剩余图书)自动减一。
createtriggert_borrow
ontb_borrowforinsert
declare@bookid_readvarchar(10)
select@bookid_read=bookidfrominserted
begin
updatetb_booksetremain=remain-1wherebookid=@bookid_read
End
2、还书触发器,当还书时,图书表中的remain自动加一。
createtriggert_back
ontb_borrowforupdate
asifupdate(backTime)
updatetb_booksetremain=remain+1wherebookid=@bookid_read
3、罚款触发器,当借阅图书超期时,自动在punishment表中添加罚款记录,记录罚款读者、书名、天数、金额,并且自动将reader表中的ifeffective置为0,是该读者不能再借书。
createtriggert_punish
as
ifupdate(backTime)
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
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
4、读者是否有效触发器,当读者借书时,检查reader表中的ifeffective属性,若为0则说明有超期罚款,不能借书。
createtriggert_ifcanborrow
declare@readeridvarchar(10),
@ifeffectivetinyint
select@readerid=readeridfrominserted
select@ifeffective=ifeffectivefromtb_readerwherereaderid=@readerid
if@ifeffective=0
您有超期罚款!
rollbacktransaction
四、视图脚本
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
数据库的恢复
数据库差异备份
\LibarySystem\backup\d_db_library'
withdifferential
usemaster
restoredatabasedb_library
fromdisk='
withnorecovery
withreplace