图书共享的设计_第1页
图书共享的设计_第2页
图书共享的设计_第3页
图书共享的设计_第4页
图书共享的设计_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 图书共享的设计一需求分析 为了能够使学生通过书本了解更多的知识,丰富自己的知识储备,我们班建立一个图书角供学生们互相交换图书进行阅览。图书角的书籍来源是学生的捐赠,捐赠的书籍需要根据内容进行分类,借阅书籍需要进行相关的记录,借阅的同学必须按时归还书籍,安排图书角管理员,保证图书角能够正常开放。该数据库的主要是实现图书捐赠,图书管理,图书借阅信息的功能。1. 班级图书共享的图书为班级同学的捐赠,捐赠时管理员记录捐赠人的姓名,学号,性别,联系方式,捐书时间,捐书姓名,捐书数量,书的好坏程度的情况。2. 每位同学每次只能借一本书,借阅时间为一个月,到期允许续借,期限也为一个月,每本书只有一次可以续

2、借的机会。如果超过借书期限,每天收费0.1元,如有破损则借书者按照损坏程度进行赔偿。3. 管理员需要记录下借阅学生的姓名,学号,性别,联系方式,借书时间和借阅书籍的名字。还要负责将同学们捐来的书籍进行分类,防止同名书的混淆,并给书目编号。4. 统计出捐书数目最多的人,奖励一本书籍。二,概念结构设计 1.书籍 类别书名书籍 污损程度编号 2.学生学号姓名学生 性别联系方式3.整体结构污损程度编号类别书名续借记录作者书名书籍归还时间罚款记录借阅时间捐赠数量捐赠时间借阅数量捐赠借阅 11111n管理姓名管理员 学号姓名联系方式性别学生编号联系电话三、逻辑结构设计学生(姓名,学号,性别,联系方式)图书

3、(书名,图书编号,作者,数量,类别,污损情况)捐赠表(捐书者的学号,捐赠图书的编号,捐书的时间)书籍借阅(图书编号,借阅者的学号,借阅时间,归还时间,续借情况,罚款记录)四、物理结构设计数据库名:class book corner数据库物理文件初始大小:10MB是否允许自动增长:是自动增长方式:每次增加5MB最大数据容量:不受限是否自动收缩:是是否是只读数据库:否事务日志文件位置:f:class book corner事务日志文件初始大小:1MB事务日志文件最大数据容量:20 MB创建如下数据表:学生表表名student作用学生信息列名数据类型长度是否允许为空字段说明snovarchar20否

4、主键,学号snamevarchar50否学生姓名ssexchar10否性别 spnumvarchar20否联系电话图书表表名book作用图书信息列名数据类型长度是否允许为空字段说明bnovarchar20否主键,图书标号bnamevarchar50否书名bauthorvarchar50否作者bslInt4否数量btypevarchar50否图书类型bsituationvarchar100否污损情况brenewbit1否续借情况,1(可续借),0(不可续借)借阅表表名borrow作用借阅信息列名数据类型长度是否允许为空字段说明bnumbervarchar20否外键,引用book表中的主键bnoB

5、number与snumber共同为主键snumbervarchar20否外键,引用student表中主键snobtimedatetime8否借阅时间brtimedatetime8否归还时间bqkfloat8否超过归还时间,每天0.1元,欠款为1,不欠款为0bxjint4否续借次数bkjbit1否是否可借(1为可借。0为不可借)捐书表表名donate作用捐书信息列名数据类型长度是否允许为空字段说明dsnovarchar20否外键,引用student表中的主键snodbnovarchar20否外键,引用book表中主键bnodsno和dbno共同为主键dtimedatetime8否捐书时间查询1.

6、 查询学号为20130105的学生姓名和联系电话。Select sname,spnumFrom studentWhere sno=201301052. 查询捐了书的编号为007学生姓名select snamefrom student,donatewhere student.sno=donate.dsno3. 查询孙菲捐书的书的编号Select dbnoFrom donateWhere dno=(select sno From student Where sname=孙菲)4. 查询孙菲借书的书名Select bnameFrom bookWhere bno=(select bnumber Fro

7、m borrow Where snumber=(select sno From student Where sname= 孙菲)5. 查询捐了三本书的学生的姓名Select snameFrom studentWhere sno=(select dsno From donate Group by Having count(20130101)=3) 创建视图(1) 视图名称:借书信息;显示:图书编号,图书名,借书者学号,借书者姓名。Create view 借书信息AsSelect bno as'图书编号',bname as'图书名称',sno as'借书人学

8、号',sname as'借书人姓名'From borrow inner join book on bno=bnumber inner join student on sno=snumber(2)视图名称:捐书信息 ,显示:图书编号,图书名,捐书人学号,捐书人姓名和捐书时间create view 捐书信息asselect dsno as '捐书人学号',dbno as'捐书的编号',dtime as'捐书时间',sname as'捐书人姓名',bname as'书籍名称'from donate

9、 inner join student on dsno=sno inner join book on dbno=bno (3)视图名称:图书污损情况,显示:损坏书籍的编号,书名,捐献者和书籍类型create view 图书污损情况asselect bno as'图书编号',bname as'图书名称',btype as'书籍类型'from bookwhere bsituation='污损'(4)视图名称:每个学生捐书的数量 显示;学生姓名,捐书总数create view 每个学生捐书的数量asselect dsno as'

10、学生学号',count(*) as'捐书总数'from donate group by dsno存储过程(1) 创建存储过程借阅情况,输入学号可以查询该学生借书的书名,借书时间,归还时间,是否可借。create proc 借阅情况(number char (50)asbeginselect bname as'书名',btime as'借书时间',brtime as'还书时间',bkj as'是否可借'from borrow inner join book on bnumber=bno inner join

11、student on snumber=snowhere number=snumberendgoExec 借阅情况20130101(2)创建一个存储过程jsxx,输入书的名称可以查询出该书的编号,捐书人的姓名和捐书时间。create proc jsxx(bnumber char (50)asbeginselect bno as'图书编号', sname as'捐书人的姓名',dtime'捐书时间'from donate inner join book on dbno=bno inner join student on dsno=snowhere b

12、number=bnoendExec jsxx0001触发器(1) 创建一个触发器借书学生欠费通知,若学生欠费则提示你已欠费,没有欠费则提示借书成功create trigger 借书学生欠费通知 on borrowfor insertasbegindeclare qf float(8)select qf=(select bqk from inserted)if qf='1'print '你已经欠款!'elseprint'借书成功!'endinsert into borrowvalues('0004','20130102

13、9;,'2013-6-26','2013-7-26','1','0','0')(2) 在student表上创建一个删除类型的触发器studelete,当在student表中删除某一条记录后,在borrow和donate表中删除与此学号对应的记录。create trigger studelete on studentfor deleteas beginprint'studelete触发器开始执行'declare stunum char(10)print'把在student中删除记录的学号赋值给

14、stunum'select stunum=snofrom deletedprint'开始查找并删除borrow中的相关记录'delete from borrowwhere snumber=stunumprint'删除了borrow中学号为'+rtrim(stunum)+'的记录'print'studelete触发器开始执行'declare stunum1 char(10)print'把在student中删除记录的学号赋值给stunum'select stunum1=snofrom deletedprint&

15、#39;开始查找并删除donate中的相关记录'delete from donatewhere dsno=stunum1print'删除了donate中学号为'+rtrim(stunum1)+'的记录'enddelete studentwhere sno='20130101'(3) 创建一个触发器,实现捐赠一本书,剩余库存加1create trigger tssl on donatefor insertasbegindeclare number as char(20)select number=(select dbno from inse

16、rted)update book set bxl=bxl+1where bno=numberendinsert into donatevalues('20130102','0006','2013-6-26')函数(1)查询学生的读书时间create function sturetime(bno char(20),sno char(20)returns intasbegindeclare time as intdeclare brtime as char(20)declare btime as char(20)select brtime=brtime,btime=btimefrom borrowwhere bnumber=bno and snumber=snoif month(brtime)=month(btime) set time=(day(brtime)-day(btime)else set time=(day(brtime)+30-day(btime)return timeendprint'该学

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论