班级图书管理系统数据库设计.docx
- 文档编号:2007393
- 上传时间:2022-10-26
- 格式:DOCX
- 页数:14
- 大小:60.96KB
班级图书管理系统数据库设计.docx
《班级图书管理系统数据库设计.docx》由会员分享,可在线阅读,更多相关《班级图书管理系统数据库设计.docx(14页珍藏版)》请在冰豆网上搜索。
班级图书管理系统数据库设计
一、需求分析
呼和浩特市第一中学初二年级的某班主任想要在本班内建立一个图书角,以便学生丰富生活开拓视野。
具体操作如下:
1.为建立起图书共享源,在五月一日之前每人必须捐一本书,其它每学年本班同学每人至少捐一本书。
2.管理员负责将同学们捐来的书进行分类,而且为避免同名书混淆,将给每本书编号。
3.该图书角需要一名学生担任管理员,该管理员由学生在班级范围内推选,任期一学期,下一年重新选举,且管理员不可以重复。
4.为方便确认,给每个同学都编制了一个学号。
5.为更好地管理,班级内所有人应遵循以下规则:
对于捐书者:
捐出的书自捐赠日起三个月内不准取回;
对于借书者:
按时归还所借的书,每本书借阅期限为一个月,如有逾期不还,按每天收费0.1元处理;如有破损则须赔偿损失费,由管理员评定破损程度,及赔款数额,破损严重则按遗失处理:
归还一本新书;每个学生至多借两本书;欠费状态下禁止续借,每本书至多续借1次;
6.每学期统计出捐书数目最多的人,并奖励一本书
该数据库主要实现对学生有关图书借阅,破损,捐赠,遗失等情况管理,实现有关数据的查询,删除,记录以及书籍和学生信息。
该数据库的可查询的内容包括:
1.对学生信息的查询
输入学生的学号可以查询学生姓名欠款金额,所借书的数量,所借书的名称,借书日期,类别应归还日期,遗失的书及弄坏的书的记录
2.对书籍信息的查询
输入书的编号,可以查询书的名称、类别、被借的日期、归还日期、借书人
数目
名称
二、概念结构设计
姓名
学号
学生
欠款金额
借书数目
借阅人
续借次数
图书
捐赠人
是否可借
电话
破损情况
捐赠日期
应还日期
借阅日期
遗失情况
类别
编号
管理员
学号
姓名
电话
欠款状态
实际归还时间
续借状态
借阅日期
应还日期
借阅人
编号
借阅
学生
名称
学号
姓名
联系电话
联系电话
姓名
学号
管理员
管理
图书
捐赠人
破损情况
类别
捐赠
捐赠日期
三、逻辑结构设计
学生(学号,姓名,电话,)
图书(编号,名称,类别,破损情况)
借书表(书号,借阅者学号,借阅时间,应还日期,是否续借,欠款状态,实际还书时间)
捐书表(捐书人学号,书编号,捐书时间)
注:
红色部分为修改部分
四、物理结构设计
数据库名:
BOOK
数据库物理文件初始大小:
20MB
是否允许自动增长:
是
自动增长方式:
每次增加10%
最大数据容量:
不受限
是否自动收缩:
是
是否是只读数据库:
否
事务日志文件位置:
e:
\data
事务日志文件初始大小:
2MB
事务日志文件最大数据容量:
30MB
创建如下数据表:
学生表结构
表名
Student
作用
记录学生信息
列名
数据类型
长度
是否允许为空
字段说明
SName
varchar
50
否
学生姓名
SNumber
varchar
11
否
主键,学号
SP
varchar
11
是
联系电话
图书表结构
表名
Book
作用
记录书籍信息
列名
数据类型
长度
是否允许为空
字段说明
BNumber
varchar
15
否
主键,书籍编号
BName
varchar
50
否
书名
BKind
varchar
100
否
书籍类别
Situation
varchar
200
否
破损情况
SFKJ
Bit
1
否
是否可借(1为可借,0为不可借)
借书表
表名
Borrow
作用
储存书籍借阅信息
列名
数据类型
长度
是否允许为空
字段说明
BNo
varchar
100
否
外键,引用Book表中的主键BNumber,BNo和SNo共同作为主键
SNo
varchar
11
否
外键,引用Student表中的主键SNumber
BTime
Datetime
8
否
借阅日期,
YHRQ
Datetime
8
否
应还日期
debt
float
4
否
逾期不还,以每天0.1元计费,欠款为1,不欠款为0欠款金额(欠款为1否则为0)
XJ
varchar
1
否
续借次数
SJSJ
datetime
8
否
实际还书时间
SFKJ
Bit
1
否
是否可借(1为可借,0为不可借)
捐书表
表名
Juanshu
作用
存储捐书信息
列名
数据类型
长度
是否允许为空
字段说明
JSNo
varchar
11
否
外键,引用Student表中的主键s_number
JBNo
varchar
11
否
外键,引用Book表中的主键BNumber,JSNo和JBNo
共同作为主键
JTime
Datetime
8
否
捐书时间,捐出的书自捐赠日起三个月内不准取回;
1.视图
a.视图名称:
借书信息;显示:
书编号,书籍名,借书人学号,借书人姓名。
(选择字段,重命名列名,连接查询)
createview借书信息
as
selectBNumberas'书编号',BNameas'书籍名',
SNoas'借书人学号',SNameas'借书人姓名'
fromBorrowinnerjoinBook
onBNo=BNumberinnerjoinStudent
onSNo=SNumber
b.视图名称:
捐书信息;显示:
书编号,书籍名,捐书人学号,捐书人姓名,捐赠天数
CREATEview捐书信息
as
selectJBNoas'书编号',
BNameas'书籍名',
JSNoas'捐书人学号',
SNameas'捐书人姓名',
'捐赠天数'=Datediff(day,JTime,getdate())
fromJuanshuinnerjoinBook
onJBNo=BNumberinnerjoinStudent
onJSNo=SNumber
c.视图名称:
没有借出的书;显示:
书编号,书籍名,未借出,即未借出的书列表(条件查询)
createview没有借出的书籍
as
selectBNumberas'书编号',BNameas'书籍名',SFKJas'未借出'
fromBook
wherestate='1'
d.视图名称:
已被借出的书;显示:
书编号,书籍名,被借出,即已借出书籍列表(条件查询)
createview已被借出的书
as
selectBNumberas'书编号'BNameas'书籍名',SFKJas'已借出'
fromBook
whereSFKJ='0'
e.视图名称:
捐书最多者;显示:
学号,姓名,捐书总量(top关键字,分组,排序)
createview捐书最多者
as
selecttop1JSNoas'学号',SNameas'姓名',count(JSNo)as'捐书总量'
fromJuanshuinnerjoinStudent
onJSNo=SNumber
groupbyJSNo,SName
orderbycount(JSNo)desc
f.视图名称:
是否更换新书;显示:
书籍名,完好的书(模糊查询)
CREATEview是否更换新书
as
selectBNumberas'书编号',
BNameas'书籍名',
Situationas'破损情况'
fromBook
whereSituationlike'完好'
2.存储过程:
a.创建一个名为借阅情况的存储过程,实现输入书编号,查询该书籍的借阅情况。
(书名,是否可借,借书人姓名,借书时间,应归还时间,实际归还时间)
createproc借阅情况
@jyaschar(11)
as
begin
selectBNameas'书名',
SFKJas'是否可借',
SNameas'借书人姓名',
BTimeas'借书时间',
YHRQas'应归还时间',
SJSJas'实际归还时间'
fromBorrowinnerjoinBook
onBno=BNumber
innerjoinStudent
onSNo=SNumber
where@jy=BNumber
end
GO
执行该存储过程:
execshujxinx'19'
b.创建一个名为捐书人的存储过程,输入书编号,查询该书的捐书者,捐书时间。
createproc捐书人
@xsaschar(11)
as
begin
selectJSNoas'捐书人',BNameas'书籍名称',Jtimeas'捐书时间'
fromStudentinnerjoinJuanshu
onSNumber=JSNo
where@xs=JBNo
end
执行该存储过程:
exec捐书人'3'
执行结果:
c.创建一个名为xsjies的存储过程,输入学号,查询该学生的借阅信息。
createprocxsjies
@xhaschar(11)
as
begin
selectjs_BIDas'借书编号',
b_nameas'书名',
js_timeas'借书时间',
js_returntimeas'应归还时间',
js_returntimeas'实际归还时间',
js_xujieas'是否续借',
js_qiankuanas'欠款状态'
fromJieshuinnerjoinBook
onjs_BID=BIDinnerjoinStudent
onjs_num=s_number
where@xh=s_number
end
GO
执行该存储过程:
execxsjies'20101101234'
3.触发器:
a.(级联删除)在Student上创建一个名为studelete的触发器,实现的功能,当在Student表中删除一条记录后,在Juanshu表和Jieshu表中删除与此学号对应的记录。
CREATEtriggerstudelete
onStudent
insteadofdelete
as
begin
declare@xhaschar(11)
select@xh=s_numberfromdeleted
print'开始查找并删除了Student表中的记录!
'
deletefromJuanshu
where@xh=jus_num
print'删除了Juanshu表中学号为:
'+rtrim(@xh)+'的记录'
deletefromJie
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 班级 图书 管理 系统 数据库 设计