521参照完整性定义 关系模型的参照完整性定义 在 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) /*在表级定义参照完整性*/ );
5.2参照完整性 ◆5,21参照完整性定义 522参照完整性检查和违约处理 An Introduction to Database System
An Introduction to Database System 5.2 参照完整性 ❖5.2.1 参照完整性定义 ❖5.2.2 参照完整性检查和违约处理
参照完整性检查和违约处理 可能破坏参照完整性的情况及违约处理 被参照表(例如 Student)参照表(例如SC) 违约处理 可能破坏参照完整性 插入元组 拒绝 可能破坏参照完整性 修改外码值 拒绝 删除元组 可能破坏参照完整性拒绝/级连删除/设置为空值 修改主码值 可能破坏参照完整性拒绝级连修改设置为空值 An Introduction to Database System
An Introduction to Database System 参照完整性检查和违约处理 可能破坏参照完整性的情况及违约处理 被参照表(例如Student) 参照表(例如SC) 违约处理 可能破坏参照完整性 插入元组 拒绝 可能破坏参照完整性 修改外码值 拒绝 删除元组 可能破坏参照完整性 拒绝/级连删除/设置为空值 修改主码值 可能破坏参照完整性 拒绝/级连修改/设置为空值
违约处理 令参照完整性违约处理 1.拒绝( NO ACT|ON执行 默认策略 2.级联( CASCADE操作 3.设置为空值(SET-NULL) ·对于参照完整性,除了应该定义外码,还应定义外码列是否允 许空值 An Introduction to Database System
An Introduction to Database System 违约处理 ❖ 参照完整性违约处理 ▪ 1. 拒绝(NO ACTION)执行 • 默认策略 ▪ 2. 级联(CASCADE)操作 ▪ 3. 设置为空值(SET-NULL) • 对于参照完整性,除了应该定义外码,还应定义外码列是否允 许空值