重庆大学数据完整性控制第四次实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
四、实验过程原始记录(对每个实验内容给出一两个代表性图片)
实验六、数据完整性控制
习题1.对Library中的表实现实体完整性并验证。
①给各个表设置主键
对Book表填加主键,输入T-SQL语句如下:
use Library
alter table Book
add constraint pk_bno primary key(Bno)
执行成功,结果如下:
对Reader表填加主键,输入T-SQL语句如下:
use Library
alter table Reader
add constraint PK_Reader primary key(Rno)
执行成功,结果如下:
对Borrow表填加主键,输入T-SQL语句如下:
use library
alter table Borrow
add constraint ab_Rno primary key(Rno,Bno)
②给各个表创建UNIQUE约束
在Book表中对书名创建UNIQUE约束,输入T-SQL语句如下:
use Library
alter table Book
add constraint Book_uni unique(Btitle)
执行成功,结果如下:
在Reader表中对读者名创建UNIQUE约束,输入T-SQL语句如下:
use Library
alter table Reader
add constraint Reader_uni unique(Rname)
执行成功,结果如下:
习题2.实现各个表之间的参照完整性并验证。
为Borrow表添加外键,输入T-SQL语句如下:
use Library
alter table Borrow
add constraint fk_borrow_book
foreign key(bno)references Book(pk_bno)
alter table Borrow
add constraint fk_borrow_reader
foreign key(rno)references Reader(Rno)
执行成功,验证结果如下:
习题3.实现下列约束并验证。
①姓名不能为空值。
输入T-SQL语句如下:
use Library
alter table Reader with check
add constraint ck_rname check ((Rname)is not null)
执行成功,验证结果如下:
试图向Reader表中插入姓名为空的一行记录,失败,结果如图:
②性别应该为“男”或“女”。
输入T-SQL语句如下:
use Library
alter table Reader with check
add constraint ck_Rsex check (Rsex in('男','女'))
执行成功,验证结果如下:
测试,试图向Reader中插入性别为“中”的记录,执行失败。如图:
③年龄必须在0~100之间。
输入T-SQL语句如下:
use Library
alter table Reader with check
add constraint ck_Rage check (Rage>0 and Rage<100)
执行成功,验证结果如下:
测试,试图向Reader中插入年龄为200的记录,执行失败。如图:
④价格必须大于0。
输入T-SQL语句如下:
use Library
alter table Book with check
add constraint ck_Bprice check (Bprice>0 )
执行成功,验证结果如下:
测试,试图向Book表中插入价格为0的记录,执行失败。如图:
⑤借阅日期默认为当前日期。
输入T-SQL语句如下:
use Library
alter table Borrow
add constraint ck_BorrowDate default(GetDate())for BorrowDate
执行成功,验证结果如下:
测试,试图向Borrow表中插入BorrowDate为NULL的记录,BorrowDate默认被设置为当前时间。如图:
use Library
insert into Borrow values('R06','B06',' ',' ')
习题4.创建一个触发器,当删除Reader 表中读者信息时,同时删除Borrow表中该读者的记录。
输入T-SQL语句如下:
create trigger trigger_
on Reader
instead of
delete
as
delete Borrow
where Rno in(select Rno from deleted)
执行成功,验证结果如下:
测试,在读者表中删除R05的信息,经验证Borrow表中记录被级联删除:
习题5.创建一个表BOOK——Count,用来记录每本书被借阅的次数。
●创建该表,并向其中加入数据。T-SQL语句如下:
use Library
create table Book_Count(
Bno char(8)not null primary key,
BorrowTimes char(10))
insert into Book_Count values ('B01','3')
insert into Book_Count values ('B02','2')
insert into Book_Count values ('B03','2')
insert into Book_Count values ('B04','0')
insert into Book_Count values ('B05','1')
insert into Book_Count values ('B06','1')
●创建成功,结果如下: