数据库完整性管理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北华航天工业学院《数据库原理与应用》
实验报告
报告题目:数据库完整性管理
作者所在系部:计算机科学与工程系
作者所在专业:网络工程
作者学号:20114052203
作者姓名:郭豪
指导教师姓名:李建义
完成时间:2013.05.10
北华航天工业学院教务处制
数据库完整性管理
一、实验目的
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”触发器。
三、实验步骤
(一)附加过程略,
(二)
1,创建表tb_booknew,代码及截图
create table tb_booknew
(
book_no char(10),
booktype_no int,
book_name char(20)not null,
book_writer char(10),
book_stock int
constraint C1check(book_stock between 25 and 100),
primary key (book_no),
foreign key (booktype_no)references
db_library.dbo.tb_booktype(类别编号)
on delete cascade
)
2,创建tb_borrownew代码及截图。
create table tb_borrownew
(
tb_reader_no char(10),
tb_book_no char(10),
tb_borrow_date date,
tb_back_date date,
primary key (tb_reader_no,tb_book_no)
)
3,给tb_booknew书名增加唯一性约束代码及截图
alter table tb_booknew
add constraint c2unique(book_name)
4,修改tb_booknew 的库存数在30—80之间。
alter table tb_booknew
drop constraint C1
alter table tb_booknew
add constraint C1check(book_stock between 30 and 80)
5,、使用SQL语句删除第3题增加的约束。
alter table tb_booknew
drop constraint c2
(三)
(1)创建触发器借阅信息插入修改_TRIG
create trigger借阅信息插入修改_TRIG
on dbo.tb_borrow
for insert,update
as
declare
@借阅日期date,
@归还日期date
begin
select@借阅日期=借阅日期,@归还日期=归还日期from inserted
if(DATEDIFF(M,@借阅日期,@归还日期)>3)
begin
print('该借阅记录已经超过三个月!!!');
end
else
if (exists(select*from inserted)and not exists(select*from deleted))
begin
print('插入成功!!!');
end
if exists(select*from inserted)and exists(select*from deleted)
begin
print('修改成功!!!');
end
end