数据库技术与应用B卷答案及评分标准(附学生图书借阅管理数据库设计说明书)

  • 格式:doc
  • 大小:57.00 KB
  • 文档页数:4

广州涉外经济职业技术学院
2014–2015学年第二学期期末考试试卷 (参考答案及评分标准) 科 目:数据库技术与应用 ( B )卷 考试形式:机试 考试时间: 120 分钟 适用专业班级 :13市场营销(网络营销)班 学生图书借阅管理数据库设计说明书 一、数据库系统功能简介(5分): 学生图书借阅管理数据库是一个用来管理学生图书借阅信息的数据库系统。

该数据库可以用来管理学校图书馆的学生信息、图书信息和借阅信息,实现信息的自动化管理和利用。

二、需求分析(10分) 数据流程图 三、 概念结构设计(10分) E-R 图
关系模式
读者信息(借书证号,姓名,性别,身份,班级,院系,电话,可借数目)
图书信息(图书编号,图书名称,作者,图书类别,书号,定价,出版社,库存量,已借数量)
借阅信息(借书证号,图书编号,借书日期,还书日期,罚金)
五、物理结构设计(5分)
为学生图书借阅管理数据库设计一个数据文件,一个日志文件,放在D盘的data 文件夹下;学生图书借阅管理数据库里面包含3个表,分别为学生信息、图书信息和借阅信息;数据库和数据表的结构定义请看后面创建对象的SQL语句。

六、数据库的实施(共65分)
创建数据库各种对象和执行查询的SQL语句
1.创建数据库(5分)
create database 学生图书借阅管理
on primary
(name=学生图书借阅管理_data,
filename='d:\data\学生图书借阅管理_data.mdf',
size=10mb,
maxsize=unlimited,
filegrowth=10%)
log on
(name=学生图书借阅管理_log,
filename='d:\data\学生图书借阅管理_log.ldf',
size=3mb,
maxsize=5mb,
filegrowth=1mb)
2.创建数据表(25分)
create table 图书信息
(图书编号 bigint primary key identity(100001,1),
图书名称 nvarchar(30) not null,
图书类别 varchar(10),
作者 nvarchar(30),
出版日期 char(7),
出版社名称 nvarchar(30),
书号 varchar(30) unique,
定价 decimal(5,2) check(定价<1000),
状态 bit default 1,
入馆时间 smalldatetime)
create table 学生信息
(借书证号 char(5) primary key,
姓名 varchar(8) not null,
性别 char(2),
电话 varchar(13),
班级 varchar(30),
借书册数 tinyint default 2,
办证日期 smalldatetime,
学号 char(8) unique)
create table 借阅信息
(借阅号 bigint primary key identity(1,1),
借书证号 char(5) not null references 学生信息(借书证号),
图书编号 bigint not null references 图书信息(图书编号),
借书日期 smalldatetime not null,
还书日期 smalldatetime,
罚金numeric(4,1))
3.创建数据库各种对象(共20分)
a.创建试图(5分):创建一个学生借书信息的视图,包括学生借书证号,姓名,图书编号,图书名称,借书日期和还书日期。

create view 学生借书信息
as
select a.借书证号,姓名,c.图书编号,图书名称,借书日期,还书日期
From 学生信息 as a join 借阅信息 as b
on a.借书证号=b.借书证号
join 图书信息 as c
on c.图书编号=b.图书编号
b.创建索引(5分):在学生图书借阅管理数据库中,经常要按照图书名称查询
信息,通过给图书信息表的图书名称创建一个非聚集索引来提高查询速度。

Create index ix_cname
On 图书信息(图书名称)
c.创建存储过程(5分): 根据学生借书证号返回学生借书信息,包括学生的借书证号,姓名,借书的图书编号,图书名称,借书日期和还书日期。

创建函数:
create proc 借书信息
(@借书证号 char(5))
as
select a.借书证号,姓名,c.图书编号,图书名称,借书日期,还书日期
From 学生信息 as a join 借阅信息 as b
on a.借书证号=b.借书证号
join 图书信息 as c
on c.图书编号=b.图书编号
where a.借书证号=@借书证号
执行输入参数为默认值的存储过程:
exec 借书信息
执行带输入参数的存储过程:
exec 借书信息 '00001’
d. 创建触发器(5分): 创建一个触发器实现限制学生的借书册数最多为5本。

create trigger 借书册数 on 借阅信息
for insert
as if(select 借书册数 from 学生信息,inserted
where 学生信息.借书证号=inserted.借书证号)=5
begin
print '你可借书的册数为0,不能再借书了'
rollback transaction
end
4.执行查询(共15分)
(1)简单查询(3分):查询学生的借书证号,姓名,班级。

Select 借书证号,姓名,班级 from 学生信息
(2) 条件查询(3分):查询图书定价大于30的计算机类图书信息。

Select * from 图书信息 Where 定价>30 and 图书类别=’计算机’
(3)统计查询(3分):查询所有图书的平均定价,最高定价,最低定价和定价总和。

Select avg(定价),max(定价),min(定价),sum(定价) From 图书信息
(4)分组查询(3分):查询各类别图书数目和平均定价。

Select 图书类别,count(*) as 图书数目,avg(定价) as 平均定价
From 图书信息Group by 图书类别
(5)多表查询(3分):查询借过书的学生借书证号,姓名,借书的图书编号,借书日期和还书日期。

Select a.借书证号,姓名,图书编号,借书日期,还书日期
From 学生信息 as a join 借阅信息 as b
on a.借书证号=b.借书证号。