重庆大学数据完整性控制第四次实验

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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')

●创建成功,结果如下:

相关文档
最新文档