班级图书管理系统数据库设计Word格式.docx

上传人:wj 文档编号:7615621 上传时间:2023-05-08 格式:DOCX 页数:14 大小:60.96KB
下载 相关 举报
班级图书管理系统数据库设计Word格式.docx_第1页
第1页 / 共14页
班级图书管理系统数据库设计Word格式.docx_第2页
第2页 / 共14页
班级图书管理系统数据库设计Word格式.docx_第3页
第3页 / 共14页
班级图书管理系统数据库设计Word格式.docx_第4页
第4页 / 共14页
班级图书管理系统数据库设计Word格式.docx_第5页
第5页 / 共14页
班级图书管理系统数据库设计Word格式.docx_第6页
第6页 / 共14页
班级图书管理系统数据库设计Word格式.docx_第7页
第7页 / 共14页
班级图书管理系统数据库设计Word格式.docx_第8页
第8页 / 共14页
班级图书管理系统数据库设计Word格式.docx_第9页
第9页 / 共14页
班级图书管理系统数据库设计Word格式.docx_第10页
第10页 / 共14页
班级图书管理系统数据库设计Word格式.docx_第11页
第11页 / 共14页
班级图书管理系统数据库设计Word格式.docx_第12页
第12页 / 共14页
班级图书管理系统数据库设计Word格式.docx_第13页
第13页 / 共14页
班级图书管理系统数据库设计Word格式.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

班级图书管理系统数据库设计Word格式.docx

《班级图书管理系统数据库设计Word格式.docx》由会员分享,可在线阅读,更多相关《班级图书管理系统数据库设计Word格式.docx(14页珍藏版)》请在冰点文库上搜索。

班级图书管理系统数据库设计Word格式.docx

编号

管理员

欠款状态

实际归还时间

续借状态

借阅

联系电话

管理

捐赠

三、逻辑结构设计

学生(学号,姓名,电话,)

图书(编号,名称,类别,破损情况)

借书表(书号,借阅者学号,借阅时间,应还日期,是否续借,欠款状态,实际还书时间)

捐书表(捐书人学号,书编号,捐书时间)

注:

红色部分为修改部分

四、物理结构设计

数据库名:

BOOK

数据库物理文件初始大小:

20MB

是否允许自动增长:

自动增长方式:

每次增加10%

最大数据容量:

不受限

是否自动收缩:

是否是只读数据库:

事务日志文件位置:

e:

\data

事务日志文件初始大小:

2MB

事务日志文件最大数据容量:

30MB

创建如下数据表:

学生表结构

表名

Student

作用

记录学生信息

列名

数据类型

长度

是否允许为空

字段说明

SName

varchar

50

学生姓名

SNumber

11

主键,学号

SP

图书表结构

Book

记录书籍信息

BNumber

15

主键,书籍编号

BName

varchar

书名

BKind

100

书籍类别

Situation

200

SFKJ

Bit

1

是否可借(1为可借,0为不可借)

借书表

Borrow

储存书籍借阅信息

BNo

外键,引用Book表中的主键BNumber,BNo和SNo共同作为主键

SNo

外键,引用Student表中的主键SNumber

BTime

Datetime

8

借阅日期,

YHRQ

debt

float

4

逾期不还,以每天0.1元计费,欠款为1,不欠款为0欠款金额(欠款为1否则为0)

XJ

SJSJ

datetime

实际还书时间

捐书表

Juanshu

存储捐书信息

JSNo

外键,引用Student表中的主键s_number

JBNo

外键,引用Book表中的主键BNumber,JSNo和JBNo

共同作为主键

JTime

捐书时间,捐出的书自捐赠日起三个月内不准取回;

1.视图

a.视图名称:

借书信息;

显示:

书编号,书籍名,借书人学号,借书人姓名。

(选择字段,重命名列名,连接查询)

createview借书信息

as

selectBNumberas'

书编号'

BNameas'

书籍名'

SNoas'

借书人学号'

SNameas'

借书人姓名'

fromBorrowinnerjoinBook

onBNo=BNumberinnerjoinStudent

onSNo=SNumber

b.视图名称:

捐书信息;

书编号,书籍名,捐书人学号,捐书人姓名,捐赠天数

CREATEview捐书信息

selectJBNoas'

BNameas'

JSNoas'

捐书人学号'

SNameas'

捐书人姓名'

'

捐赠天数'

=Datediff(day,JTime,getdate())

fromJuanshuinnerjoinBook

onJBNo=BNumberinnerjoinStudent

onJSNo=SNumber

c.视图名称:

没有借出的书;

书编号,书籍名,未借出,即未借出的书列表(条件查询)

createview没有借出的书籍

BNameas'

SFKJas'

未借出'

fromBook

wherestate='

1'

d.视图名称:

已被借出的书;

书编号,书籍名,被借出,即已借出书籍列表(条件查询)

createview已被借出的书

BNameas'

SFKJas'

已借出'

whereSFKJ='

0'

e.视图名称:

捐书最多者;

显示:

学号,姓名,捐书总量(top关键字,分组,排序)

createview捐书最多者

selecttop1JSNoas'

学号'

SNameas'

姓名'

count(JSNo)as'

捐书总量'

fromJuanshuinnerjoinStudent

onJSNo=SNumber

groupbyJSNo,SName

orderbycount(JSNo)desc

f.视图名称:

是否更换新书;

书籍名,完好的书(模糊查询)

CREATEview是否更换新书

selectBNumberas'

BNameas'

Situationas'

破损情况'

whereSituationlike'

完好'

2.存储过程:

a.创建一个名为借阅情况的存储过程,实现输入书编号,查询该书籍的借阅情况。

(书名,是否可借,借书人姓名,借书时间,应归还时间,实际归还时间)

createproc借阅情况

@jyaschar(11)

begin

selectBNameas'

书名'

SFKJas'

是否可借'

SNameas'

BTimeas'

借书时间'

YHRQas'

应归还时间'

SJSJas'

实际归还时间'

onBno=BNumber

innerjoinStudent

onSNo=SNumber

where@jy=BNumber

end

GO

执行该存储过程:

execshujxinx'

19'

b.创建一个名为捐书人的存储过程,输入书编号,查询该书的捐书者,捐书时间。

createproc捐书人

@xsaschar(11)

selectJSNoas'

捐书人'

书籍名称'

Jtimeas'

捐书时间'

fromStudentinnerjoinJuanshu

onSNumber=JSNo

where@xs=JBNo

end

exec捐书人'

3'

执行结果:

c.创建一个名为xsjies的存储过程,输入学号,查询该学生的借阅信息。

createprocxsjies

@xhaschar(11)

selectjs_BIDas'

借书编号'

b_nameas'

js_timeas'

js_returntimeas'

js_xujieas'

是否续借'

js_qiankuanas'

欠款状态'

fromJieshuinnerjoinBook

onjs_BID=BIDinnerjoinStudent

onjs_num=s_number

where@xh=s_number

end

execxsjies'

20101101234'

3.触发器:

a.(级联删除)在Student上创建一个名为studelete的触发器,实现的功能,当在Student表中删除一条记录后,在Juanshu表和Jieshu表中删除与此学号对应的记录。

CREATEtriggerstudelete

onStudent

insteadofdelete

declare@xhaschar(11)

select@xh=s_numberfromdeleted

print'

开始查找并删除了Student表中的记录!

deletefromJuanshu

where@xh=jus_num

删除了Juanshu表中学号为:

+rtrim(@xh)+'

的记录'

deletefromJieshu

where@xh=js_num

删除了Jieshu表中学号为:

deletefromStudent

删除了Student表中学号为:

当执行删除语句:

deletefrom

wheres_number='

20101104056'

执行结果:

b.创建一个名为sjgx的触发器,实现的功能:

输入学号,书编号,对于续借的学生,js_returntime字段月份自动更新,即延长一个月的还书时间。

(成功执行了命令,但是执行插入语句后时间更新的结果不对,没有预期的效果)

CREATEtriggersjgx

onJieshu

forinsert,update

declare@xhaschar(11),@sbhasint

select@xh=js_num,@sbh=js_BIDfrominserted

updateJieshu

setjs_returntime=datediff(month,js_returntime,js_facttime)+1

wherejs_xujie='

执行插入语句:

insertinto

Jieshu

values('

20101104058'

'

20'

2011/5/2'

2011/6/2'

2011/6/5'

c.创建一个名为jiesxz的触发器,对于有欠费的学生,再次借书时,提示:

您已欠费,不允许再借。

对于没有欠费的学生,则提示:

借书成功。

(没有成功执行,存在问题)

createtriggerjiesxz

forinsert

declare@xhaschar(11),@sbhasint

select@xh=(

selectjs_numfrominserted)

select@sbh=js_BIDfrominserted

selectjs_qiankuanfromJieshu

ifexists(js_qiankuan='

print'

您已欠费,不允许再借!

else

借书成功!

错误信息:

d.在Jieshu表上创建一个名为bookcheck的触发器,检查插入的书籍编号是否在1-30之间。

(即检查所借的书必须为同学已捐献的书籍)

createtriggerbookcheck

declare@sbhasint

select@sbh=(

selectjs_BIDfrominserted)

if@sbh>

0and@sbh<

30

输入的书籍正确!

输入的书籍不存在!

insertintoJieshu

values('

5'

执行的结果:

Jieshu表中插入记录(‘20101104058’,’5’,’2011/5/2’,’20110/6/2’,’2011/6/5’,’1’,’0’)

若执行插入语句:

InsertintoJieshu

Values(‘20101104058’,’35’,’2011/6/5’,’2011/7/5’,’2011/6/20’,’0’,’0’)

事实上,这种情况不符合主外键约束,数据也同样插不进去。

e.创建一个insert触发器,功能是:

当在Jieshu表中插入js_num时,检测Student中是否存在相应值,不存在给出信息,否则操作成功。

CREATEtriggerins_Jies

begin

declare@s_numchar(11)

select@s_num=(selectjs_numfrominserted)

if@s_numin(selects_numberfromStudent)

print'

操作成功!

else

begin

print'

学生表中没有相关纪录!

end

4.函数:

a.输入学生的学号,查询该学生的借阅信息。

(借阅信息包括:

借书编号,借书书名,借书时间,应归还时间,实际归还时间,续借情况,欠费情况)

createfunctionjieyue(@xhaschar(11))

returnstable

return(selectjs_BID,b_name,js_time,js_returntime,js_facttime,js_xujie,js_qiankuan

fromBookinnerjoinJieshu

onBID=js_BIDinnerjoinStudent

where@xh=s_number)

调用函数:

select*

fromdbo.jieyue('

b.输入学生的学号,查询捐书编号,捐书书名,捐书时间。

createfunctionxsjs2(@xhaschar(11))

return(

selectBID,b_name,jus_time

fromBookinnerjoinJuanshu

onBID=jus_BIDinnerjoinStudent

onjus_num=s_number

Select*

Fromdbo.xsjs2(‘20101101235’)

c.输入编号,查询该书的书名,借书时间,实际还书时间。

createfunctionsjxinx(@IDaschar(11))

selectb_name,js_time,js_facttime

onBID=js_BID

where@ID=BID)

fromdbo.sjxinx('

2'

d.输入学号,书籍编号,查询该学生借某本书的的欠款金额。

CREATEfunctionqkxinx(@xhaschar(11),@sbhaschar(11))

returnsfloat

declare@qfjeasfloat

select@qfje=(selectDatediff(day,js_returntime,js_facttime)*0.1

fromJieshu

where@xh=js_numand@sbh=js_BID)

if(@qfje<

=0)

set@qfje=0

else

set@qfje=(selectDatediff(day,js_returntime,js_facttime)*0.1-------日期计算函数

return@qfje

declare@rasfloat

declare@aaschar(11)

declare@baschar(10)

set@a='

set@b='

set@r=dbo.qkxinx(@a,@b)

学号为'

+rtrim(cast(@aaschar(11)))+'

学生借编号为'

+rtrim(cast(@baschar(10)))+'

的书籍欠款金额为:

print@r

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2