参照完整性
型”表 中的“读者类型ID” :
CREATE TABLE 读者
(读者号 char(6) PRIMARY KEY, 姓名 varchar(20), 性别 c har(2),
读者类型ID char(6), 类型名称varchar(16), FOREIGN KEY(读者类型ID) REFERENCES读者类型(读者类型ID) )
数据库
王伟 清华大学出版社
9781765982 数据库应用 郑智浩 电子工业出版社
9781766770 数据库原理 王丽娟 清华大学出版社
•借阅表中插入一条新记录 •借阅表中修改一^ ISBN号 •图书表中删除一条记录 •图书表中修改—ISBN号
外码
、 Borrow关系
Reader BorrowDate
ALTER TABLE 借阅 ADD CONSTRAINT FK_图书号 FOREIGN KEY(图书 号) REFERENCES图书(图书号)
4.2.3参照完整性检查和违约处理
食可能破坏参照完整性的情况及违约处理
主码4
(TSBN)
9781267845
Book关系
BookName Editor
Press
整性规则自动进行检查并进行违约处理。
可能破坏参照完整性乍■ 插入元组
违约处理 ,
拒绝 /
可能破坏参照完整性 ■■ 修改外码值 删除元组 ■降可能破坏参照完整性
拒绝 拒绝/级联删除/设置空值
修改主码值 ■降可能破坏参照完整性
拒绝/级联修改/设置空值
默认策略
4.2.3参照完整性检查和违约处理
Pl创建参照表时显式定义违约处理策略-示例
CREATE TABLE 借阅 (读者号char(6), 图书号 varchar(15), 借阅日期datetime, 还书日期datetime,
Database System
数据库系统概论
Introduction to Database Systems
主讲人:吴岩 河南理工大学
知 识
第四U!章数据库的完整性
点
实体完整性规则
2)参照完整性规则
(3 )用户定义的完整性规则
4.2参照完整性规则
参照完整性的含义
定义参照完整性
参照完整性检查和违约处理
4.2.2定义参照完整性 口
创建表时定义-语法格式
CREATE TABLE < 表名〉 (〈列名> < 数据类型〉,
•••
FOREIGN KEY(< 列名〉)REFERENCES 被参照表名 (< 列名〉)
4.2.2定义参照完整性
Pl创建表时定义-示例
读者(读者号,姓名,性别,读者类型ID,类型名称)
Primary Key(读者号,图书号),/*在表级定义实体完整性 Foreign key (读者号)References读者(读者号)/*在表级定义参照完整性
ON DELETE CASCADE /*当删除读者表中元组时,级联删除借阅表中相应元组
ON UPDATE CASCADE, /*当更新读者表中读者号时,级联更新借阅表中相应元组 Foreign key (图书号)References图书(图书号)
ON DELETE NO AC^ON /*当删除图书表中元组造成与借阅表不一致时,拒绝删除 ON UPDATE CASCADE /*当更新图书表中图书号时,级联更新借阅表中相应元组
•参照完整性规则要求外键属性取值为被参照 表中
某主码的取值,或者为空值。
•参照完整性规则可用Foreign Key定义。 •当执行增' 删、改等操作时,DBMS根据参照 完
9781267845 张晨
2018-3-2
9781267845 王明明 2018-3-3
9781765980 程丽
2018-4-12
9781766771 程丽
2018-4-12
9781766772 程丽
2018-4-13
4.2.3参照完整性检查和违约处理
口可能破坏参照完整性的情况及违约处理
被参照表(例如图书表) 参照表(例如借阅表)
4.2.2定义参照完整性
食 向表中添加约束-语法格式
ALTER TABLE < 表名〉 ADD CONSTRAINT< 约束名〉FOREIGN KEY(< 列 名〉) REFERENCES被参照表名(< 列名〉)
4.2.2定义参照完整性
四向表中添加约束-示例
图书(图书号,书名,主编,出版社,单价) 借阅(读者号,图书号,借阅日期,还书日期) 在已经创建的“借阅”表中添加名称为FK_图书号的参照完整性 约束:
4.2.1参照完整性的含义
食参照完整性规则
若属性(或属性组)F是基本关系R的外码,它与基本关系S的主 码Ks相对应(R和S不一定是不同的关系),则对于R中每个元组在F上 的值必须:
•或者等于空值(F的每个属性值均为空值); •或者等于S中某个元组的主码值。
4.2.2定义参照完整性
1用FOREIGN KEY短语定义哪些列为外码 ___ 2用REFERENCES短语指明外码参照哪些表的主码 3可在创建表时定义约束或向表中添加约束