1、 网络工程系综合性实验网络工程系综合性实验 实验报告实验报告 课程名称 数据库技术与应用 学 号 姓 名 任课老师 2012 年 11 月 图书馆数据库设计图书馆数据库设计 一一.实验内容实验内容: 为图书馆设计一个数据库,此数据库对每个借阅者保存读者记 录, 包括: 借书证号、 姓名、 性别、 单位、 可借数量。 对每本书记录: 书号、书名、作者、出版社。对每本被借出的书有:读者号、借出日 期、应还日期。 可以随时查阅书库中的书籍信息,所有的书籍均由书号唯一标 识;可以随时查阅书籍借还情况,系统约定任何人可以借多本图书, 任何一种图书可以为多人所借,借书证号具有唯一性。 二二.实验要求:实验
2、要求: 1.基于 数据库概论 中所学的知识分析该数据库的基本结构, 2.用 Transact-sql 命令完成如下要求: (1)创建数据库和数据表,定义每个表的主键和外键,为每个 属性选择合适的数据类型,定义每个属性是否允许空值,是否 有默认值等; (2)结合具体情况为数据库表设置合理的约束或规则; (3)如果需要,为数据表设计合理的触发器; (4)使用 SQL 语句,在你设计的每个表中插入至少 3 条数据, 要求记录满足数据约束要求,且尽量真实可信; (5)自行设计查询要求,给出经常需要用到的查询语句。 3.写出完整的实验报告。 三三.实验代码实验代码 -创建创建 library 数据库数据
3、库 create database library on primary (name=library_dat,-创建主数据库文件 filename=c:mydatalibrarydat.mdf, size=5, maxsize=100, filegrowth=10%) log on (name=library_log,-创建日志数据库文件 filename=c:mydatalibrarylog.ldf, size=5, maxsize=100, filegrowth=5) go -借阅者信息表借阅者信息表 use library go create table reader (rno char
4、(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 b
5、orrowbook (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 -读者借书读者借书 crea
6、te 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 w