5.2.1参照完整性定义 ◆关系模型的参照完整性定义 在 CREATE TABLE中用 FOREIGN KEY短语定义哪些 列为外码 用 REFERENCES短语指明这些外码参照哪些表的主码 An Introduction to Database System
An Introduction to Database System 5.2.1 参照完整性定义 ❖关系模型的参照完整性定义 ▪ 在CREATE TABLE中用FOREIGN KEY短语定义哪些 列为外码 ▪ 用REFERENCES短语指明这些外码参照哪些表的主码
参照完整性定义(续) 例如,关系SC中一个元组表示一个学生选修的某门课程的成绩 (sno,cno)是主码。Sno,cno分别参照引用 Student表的 主码和 Course表的主码 例3]定义SC中的参照完整性 CREATE TABLE SC (Sno CHAR(9)NOT NULL, Cno CHAR(4)NOT NULL, Grade SMALLINT, PRIMARY KEY(Sno,Cno),/在表级定义实体完整性 FOREIGN KEY(Sno) REFERENCES Student(Sno) 在表级定义参照完整性* FOREIGN KEY(Cno) REFERENCES Course(Cno) /在表级定义参照完整性* ); An Introduction to Database System
An Introduction to Database System 参照完整性定义(续) 例如,关系SC中一个元组表示一个学生选修的某门课程的成绩, (Sno,Cno)是主码。Sno,Cno分别参照引用Student表的 主码和Course表的主码 [例3] 定义SC中的参照完整性 CREATE TABLE SC (Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT, PRIMARY KEY (Sno, Cno), /*在表级定义实体完整性 */ FOREIGN KEY (Sno) REFERENCES Student(Sno), /*在表级定义参照完整性*/ FOREIGN KEY (Cno) REFERENCES Course(Cno) /*在表级定义参照完整性*/ );
52参照完整性 ◆521参照完整性定义 ◆52.2参照完整性检查和违约处理 An Introduction to Database System
An Introduction to Database System 5.2 参照完整性 ❖5.2.1 参照完整性定义 ❖5.2.2 参照完整性检查和违约处理
参照完整性检查和违约处理 可能破坏参照完整性的情况及违约处理 被参照表 参照表(例如SC) 违约处理 (例如 Student) 可能破坏参照完整性 插入元组 拒绝 可能破坏参照完整性 修改外码值 拒绝 删除元组 可能破坏参照完整性拒绝级连删除设置为空值 修改主码值 可能破坏参照完整性拒绝级连修改设置为空值 An Introduction to Database System
An Introduction to Database System 参照完整性检查和违约处理 可能破坏参照完整性的情况及违约处理 被参照表 (例如Student) 参照表(例如SC) 违约处理 可能破坏参照完整性 插入元组 拒绝 可能破坏参照完整性 修改外码值 拒绝 删除元组 可能破坏参照完整性 拒绝/级连删除/设置为空值 修改主码值 可能破坏参照完整性 拒绝/级连修改/设置为空值
违约处理 令参照完整性违约处理 1.拒绝 NO ACTION执行 默认策略 2.级联( CASCAD日操作 3设置为空值( SET-NULL 对于参照完整性,除了应该定义外码,还应定义外码列是否允 许空值 An Introduction to Database System
An Introduction to Database System 违约处理 ❖ 参照完整性违约处理 ▪ 1. 拒绝(NO ACTION)执行 • 默认策略 ▪ 2. 级联(CASCADE)操作 ▪ 3. 设置为空值(SET-NULL) • 对于参照完整性,除了应该定义外码,还应定义外码列是否允 许空值