数据库完整性管理
- 格式:doc
- 大小:51.00 KB
- 文档页数:5
北华航天工业学院《数据库原理与应用》
实验报告
报告题目:
作者所在系部:
作者所在专业:
作者学号:
作者姓名:
指导教师姓名:
完成时间:
北华航天工业学院教务处制
数据库完整性管理
一、实验目的
1、理解数据库完整性约束机制;
2、掌握创建、修改和删除完整性约束的方法;
3、掌握创建和删除触发器的方法。
二、实验内容
(一)附加上次实验所创建的数据库“db_Library”,并回顾该数据库的数据表信息。
(二)约束的创建和管理
1、使用SQL语句创建图书表(tb_booknew),要求为各字段选择合适的数据类型及名称,其中“图书编号”字段为主码;“类别编号”字段为外码,删除图书类别信息表中记录时级联的删除图书信息表中对应的记录;书名不允许空值;库存数限制的25到100之间。
2、使用SQL语句创建借阅表(tb_borrownew),要求为各字段选择合适的数据类型及名称,其中“图书编号”和“读者编号”的组合值为主码。
3、使用SQL语句为图书表(tb_booknew)中书名字段增加唯一性约束。
4、使用SQL语句将第1题的库存数限制修改为30到80之间。
5、使用SQL语句删除第3题增加的约束。
(三)触发器的创建和管理
1、使用SQL语句创建一个名为“借阅信息插入修改_TRIG”的触发器,要求在“借阅信息表”中插入或修改记录时触发该触发器,检查“归还日期”字段修改是否超过3个月,如果超过给出相应提示,不超过给出相应提示(“插入记录成功”或“修改记录成功”)。
对“借阅信息表”进行插入或修改操作,验证触发器的执行情况。
2、使用SQL语句创建一个插入、更新类型的触发器“图书信息_TRIG”,当“图书信息表”中插入或修改记录时,触发该触发器,检查库存册数是否大于0,若不大于0,则撤销插入和修改操作。
在“借阅信息表”中插入或修改一条记录,给定的库存册数值为-1,验证触发器的执行情况
3、使用SQL语言删除“借阅信息插入修改_TRIG”触发器。
三、实验步骤
use[master]
go
create database db_Library
on primary
(
name=N'db_Library_data',
filename='E:\SQL\db_Library_data.mdf',
size=10MB,
maxsize=300MB,
filegrowth=10%
)
log on
(
name='db_Library_log',
filename='E:\SQL\db_Library_data.ldf',
size=5MB,
maxsize=200MB,
filegrowth=2MB
)
create table tb_course--课程信息表(Coursenumber int,
Coursename char(20),
Thefirstcourse char(20),
Credit int)
create table tb_booktype--图书类别信息表(Typenumber int primary key,
Categoryname char(20)
)
create table tb_book--图书信息表
(ISBN int,
Typenumber int,
Title char(20),
Author char(20),
BookPublic char(20),
BookPrice float,
Inventorynumber int
)
create table tb_reader--读者信息表
(
ReaderID char(20),
Name char(20),
Sex char(2),
StudentID int,
Class char(20),
Pastern char(20)
)
create table tb_borrow--借阅信息表
(
ISBN int,
ReaderID char(20),
Borrowingdate char(20),
Returndate char(20))
/*、使用SQL语句创建图书表(tb_booknew),要求为各字段选择合适的数据类型及名称,其中“图书编号”字段为主码;“类别编号”字段为外码,删除图书类别信息表中记录时级联的删除图书信息表中对应的记录;书名不允许空值;库存数限制的到之间。
*/
create table tb_booknew
(
ISBN int,
Typenumber int,
Author char(20),
BookPublic char(20),
BookPrice float,
Inventorynumber int,
primary key(ISBN),
foreign key(Typenumber)References tb_booktype(Typenumber),
Title char(20)not null,
constraint c1check(Inventorynumber between 25 and 100),
)
/*2、使用SQL语句创建借阅表(tb_borrownew),要求为各字段选择合适的数据类型及名称,其中“图书编号”和“读者编号”的组合值为主码。
*/
create table tb_borrownew
(
ISBN int,
ReaderID char(20),
Borrowingdate char(20),
Returndate char(20),
primary key(ISBN,ReaderID),
)
/*3、使用SQL语句为图书表(tb_booknew)中书名字段增加唯一性约束。
*/
alter table tb_booknew
add constraint booknewISBN
unique(ISBN)
/*4、使用SQL语句将第题的库存数限制修改为到之间。
*/
alter table tb_booknew
drop constraint c1
alter table tb_booknew
add constraint c1check(Inventorynumber between 30 and 80)
/*、使用SQL语句删除第题增加的约束。
*/
alter table tb_booknew
drop constraint booknewISBN
/*触发器的创建和管理
、使用SQL语句创建一个名为“借阅信息插入修改_TRIG”的触发器,
要求在“借阅信息表”中插入或修改记录时触发该触发器,
检查“归还日期”字段修改是否超过个月,如果超过给出相应提示,不超过给出相应提示(“插入记录成功”或“修改记录成功”)。
对“借阅信息表”进行插入或修改操作,验证触发器的执行情况。
*/
create trigger借阅信息插入修改_TRIG
on tb_borrow
for insert,update
as
begin
declare@date datetime,@bookno char(10),@readerno char(10)
select@date=Returndate,@bookno=ISBN,@readerno ReaderID
from inserted
if@date>'2011-12-31'
begin
print'date more than 2011-12-31'
select@bookno图书编号,@readerno读者编号
end
end
insert into tb_borrow values('10011','R10004','2011-11-4','2012-2-2')
/*2、使用SQL语句创建一个插入、更新类型的触发器“图书信息_TRIG”,当“图书信息表”中插入或修改记录时,
触发该触发器,检查库存册数是否大于,若不大于,则撤销插入和修改操作。
在“借阅信息表”中插入或修改一条记录,给定的库存册数值为-1,验证触发器的执行情况*/
create trigger图书信息_TRIG
on tb_book
for insert,update
as
begin
print'begin trigger'
declare@kccs int
select@kccs=Inventorynumber from inserted
if@kccs<0
rollback
end
insert into tb_book values('11001',2,'eee','ddd','ggg',29,-1)
update tb_book set Inventorynumber=-2 where ISBN='10002'
/*3、使用SQL语言删除“借阅信息插入修改_TRIG”触发器。
*/
drop trigger借阅信息插入修改_TRIG。