图书馆数据库设计

一.实验内容:

为图书馆设计一个数据库,此数据库对每个借阅者保存读者记录,包括:借书证号、姓名、性别、单位、可借数量。对每本书记录:书号、书名、作者、出版社。对每本被借出的书有:读者号、借出日期、应还日期。

可以随时查阅书库中的书籍信息,所有的书籍均由书号唯一标识;可以随时查阅书籍借还情况,系统约定任何人可以借多本图书,任何一种图书可以为多人所借,借书证号具有唯一性。

二.实验要求:

1.基于《数据库概论》中所学的知识分析该数据库的基本结构,2.用Transact-sql命令完成如下要求:

(1)创建数据库和数据表,定义每个表的主键和外键,为每个属性选择合适的数据类型,定义每个属性是否允许空值,是否有默认值等;

(2)结合具体情况为数据库表设置合理的约束或规则;

(3)如果需要,为数据表设计合理的触发器;

(4)使用SQL语句,在你设计的每个表中插入至少3条数据,要求记录满足数据约束要求,且尽量真实可信;

(5)自行设计查询要求,给出经常需要用到的查询语句。

3.写出完整的实验报告。

 

三.实验代码

--创建library数据库

create database library

on primary

(name=library_dat,--创建主数据库文件

filename='c:\mydata\librarydat.mdf',

size=5,

maxsize=100,

filegrowth=10%)

log on

(name='library_log',--创建日志数据库文件

filename='c:\mydata\librarylog.ldf',

size=5,

maxsize=100,

filegrowth=5)

go

--借阅者信息表

use library

go

create table reader

(rno char(10) primary key,

rname char(10) not null,

rsex char(2) check(rsex in ('男','女')),

rdepart char(30) not null,

rmaxb smallint not null default(5),

)

go

create table book

(bno char(10) primary key ,

bname char(20) not null,

bauthor char(20) ,

bconcern char(20) not null,

bnum int not null )

go

create table borrowbook

(bbno char(20) primary key,

rno char(10) foreign key(rno) references reader(rno),

bno char(10) foreign key(bno) references book(bno),

bbdateo datetime not null default(getdate()),

bbdaten datetime not null default(dateadd(mm,2,getdate())),

borrownum int  not null default(1) )

go

 --读者借书

create proc pr_borrow @rno char(10),@bno char(10)

as

if(@rno in (select rno from reader) and @bno in(select bno from book))

begin

if((select bnum from book where bno=@bno) like 0 or (select rmaxb from reader where rno=@rno) like 0)

begin

print '该书本已借完或借书已达最大书目'

return -7

end

else

if(@rno+@bno in (select bbno from borrowbook))

begin

update borrowbook

set borrownum=borrownum+1

where bbno=@rno+@bno

update  reader

set rmaxb=rmaxb-1 where rno=@rno

update book

set bnum=bnum-1 where bno=@bno

end

else

begin

insert borrowbook(bbno,rno,bno)

values (@rno+@bno,@rno,@bno)

update  reader

set rmaxb=rmaxb-1 where rno=@rno

update book

set bnum=bnum-1 where bno=@bno

end

end

else

print '您输入的信息有误,请重新输入'

return -7

go

--读者还书

create proc pr_return @rno char(10),@bno char(10)

as

update  reader

set rmaxb=rmaxb+1 where rno=@rno

update book

set bnum=bnum+1 where bno=@bno

update borrowbook

set borrownum=borrownum-1

where bbno=@rno+@bno

if ((select borrownum from borrowbook where bbno=@rno+@bno)<=0)

begin

delete  from  borrowbook  where  bbno=@rno+@bno

end

go

--添加book数据

insert book

values('s0001','数据库应用技术','刘卫军','清华大学出版社','10')

insert book

values('s0002','离散数学','屈婉玲','高等教育出版社','9')

insert book

values('s0003','计算机英语','刘艺','机械工程出版社','6')

insert book

values('s0004','java程序设计与教程','王行言','清华大学出版社','12')

go

--添加 reader数据

insert reader

values('10168001','张三','男','计算机系通信工程','5')

insert reader

values('10168002','李四','女','计算机系网络工程','5')

insert reader

values('10168003','吴五','男','计算机系网络工程','5')

insert reader

values('10168004','王六','女','计算机系通信工程','5')

go

四:图书馆数据库的实现

 --常用查询测试

select * from reader

select * from book  --查阅书库中的书籍信息

select * from borrowbook --查阅书籍借还情况

select rno from borrowbook where rno=10168001 --查询借书证为10168001的借书情况

 --测试中恢复数据用到的语句

drop procedure pr_borrow

drop procedure pr_return

drop table borrowbook

update book

set bnum=8 where bno='s0001'

update borrowbook

set borrownum=1

update reader

set rmaxb=5

 --执行借书还书

--1.一本书被多人所借(书借完提示错误)

/*借书说明:

读者借书使用存储过程pr_borrow,读者借一本书的会记录到

borrowbook中,并对book表中的书数量bnum减一,读者最大借书数量减一,读者重复借同一本书籍是会修改borrowbook中的借书数量borrownum。若读者最大借书数或图书书目等于0

则不修改borrowbook表,并提示错误消息。*/

exec pr_borrow '10168001','s0001'

exec pr_borrow '10168003','s0001'

exec pr_borrow '10168002','s0001'--重复执行这三条中一条消息会显示'该书已借完'

select * from reader

select * from book

select * from borrowbook

--2.一人借多本书

exec pr_borrow '10168001','s0001'

exec pr_borrow '10168001','s0002'

exec pr_borrow '10168001','s0003'

select * from reader

select * from book

select * from borrowbook

--3.还书 (借书书目还清后删除借书记录)

/*还书说明:

还书修改borrowbook记录并修改对应读者和书籍的rmaxb和bnum加一。

*/

exec pr_return '10168001','s0001'

exec pr_borrow '10168003','s0001'

exec pr_borrow '10168002','s0001'

select * from reader

select * from book

select * from borrowbook

go

课程设计---图书馆数据库相关推荐

  1. c语言课程设计作业图书管理系统,C语言课程设计图书馆管理系统程序代码.doc

    C语言课程设计图书馆管理系统程序代码.doc includestdio.h includewindows.h includestring.h includeconio.h define M 100 s ...

  2. 【课程设计】数据库:火车票管理系统

    [课程设计]数据库:火车票管理系统 摘要:本文主要介绍了火车票管理系统,其中包括其选题功能概述,对该系统的方案方法设计,以及过程实现等内容.由于系统的代码量较大,因此将会较为抽象地对思想进行介绍,在必 ...

  3. 数据库课程设计-图书馆管理系统(1.数据库分析部分)

    图书馆管理系统第一部分,数据库分析. 主要是需求分析.设计概要模块.数据库概念结构设计(E-R图).数据库逻辑结构设计(表.存储过程.触发器) 目录 1. 需求分析 1.1 数据流图 1.2 数据字典 ...

  4. Java web 课程设计——图书馆管理系统(SSM)

    题目要求 本网上图书馆系统应实现图书网上检索.预约和续借功能: 系统管理:定义读者类别并设置参数,添加.修改和删除读者信息. 图书续借和预约:实现图书的续借.预约等功能. 图书检索:按书名或作者等信息 ...

  5. 医院管理系统mysql课程设计_数据库(课程设计)报告(医院管理系统).doc

    数据库(课程设计)报告(医院管理系统) 数据库课程设计 报告模版 齐齐哈尔大学 数据库课程设计报告 题目: 班级: 姓名: 学号: 指导教师: 2013 医院信息管理系统 摘要:医院作为一个极其重要的 ...

  6. 【课程设计】数据库C#课程设计 教务处管理系统 vs2017和sql server2014制作

    数据库C#课程设计 教务处管理系统 vs2017和sql server2014制作 前言 一.系统模型图 二.数据库设计 1.E-R图 2.关系模式图 3.建表 三.用户界面设计 四.部分源代码 五. ...

  7. 学生成绩管理系统mysql课程设计_数据库课程设计(极其简单的学生成绩管理系统)...

    这个是我大三上学期的时候刚开始学习数据库课程的时候做的一个很稀烂的课程设计的源代码,当时刚刚开始学习Java和Oracle,而且当时就花了今年元旦3天假,做的这个C/S程序中没有加入触发器和存储过程等 ...

  8. 人事管理java 课程设计_数据库+Java课程设计 人事管理系统 (一)

    一.JAVA与数据库的合作 此次开发语言为Java,所用的数据库驱动是mysql-connector-java-5.1.8-bin.jar 第一步   用Java连接MySQL数据库(驱动下载:htt ...

  9. Python课程设计:图书馆管理系统

    图书馆管理系统: 基于python系统 引用库进行操作 系统主要实现: 添加书 删除书 借书 还书 查询图书信息 查询马上要归还的图书信息 按照借阅次序排序 源码简介: 对已图书信息进行更新操作,包括 ...

最新文章

  1. shell批量添加用户
  2. 万年历插件软件测试,万年历软件测试报告
  3. HDU 2498 Digits
  4. oracle错误号大全(查询ora错误号以及解决方法技巧)
  5. 博罗县房产管理局应用级本地容灾备份系统采购项目
  6. 分享最新40款免费的 WordPress 主题(上篇)
  7. 第一个Android项目HelloAndroid
  8. poj3254(状压dp入门第一道题,很详细)
  9. mybatis的Mapper文件配置
  10. arcgis两点之间连线_three3D地图设置两点之间的连线
  11. Codeforces Round 1384
  12. laravel seeder factory填充数据
  13. pdf及word文档的读取 pyPDF2,docx
  14. 笔记本电脑实现内外网双通成功经验分享(内网用有线,外网用无线)
  15. RCLAMP0544T 国产替代上海雷卯ULC0544T
  16. 基于django的 md5加密
  17. 01.mico开发环境准备
  18. 四川大学信息服务平台 ScuInfo网页 JSON数据解析
  19. against fate
  20. 小猫咪研学之K8S基本介绍

热门文章

  1. 变频器电路图 MD320T400G变频自绘电路图
  2. 40张PPT完整解析字节跳动人力资源体系(附PPT)
  3. 如何通过域名获取主机ip地址
  4. 最新国外YouTube油管申请开通收益从注册到收款整体详细流程!
  5. linux ip命令 flush,Linux网络工具学习之:IP命令学习03
  6. C++ OpenCV 自带颜色表操作
  7. 苹果远程服务器未响应,win10 远程服务器未响应
  8. 客户机 服务器系统的特点是客户机和服务器,客户机 服务器数据库系统的特点...
  9. Latex数学公式-求导、分数的表示
  10. 服务器性能监控及常用命令