数据库 概论 SQL 第五章 数据库完整性.ppt
文本预览下载声明
第一篇 基础篇 数据库完整性 完整性控制机制 Outline 实体完整性 参照完整性 用户定义的完整性 完整性约束命名子句 *域中的完整性限制 触发器 小结 本章重点 DBMS必须具备的几个特性 实体完整性的定义、检查及违约处理 参照完整性的定义,可能破坏参照完整性的种类和处理方法。 触发器的定义、执行顺序以及相应的操作。 实体完整性 1.实体完整性定义 2.实体完整性检查和违约处理 1.实体完整性定义 示例 [例1] 将Student表中的Sno属性定义为码 示例(续) [例2]将SC表中的Sno,Cno属性组定义为码 实体完整性 1.实体完整性定义 2.实体完整性检查和违约处理 2.实体完整性检查和违约处理 实体完整性检查和违约处理(续) 检查记录中主码值是否唯一的一种方法是进行全表扫描 实体完整性检查和违约处理(续) 索引 Outline 实体完整性 参照完整性 用户定义的完整性 完整性约束命名子句 *域中的完整性限制 触发器 小结 参照完整性 1.参照完整性定义 2.参照完整性检查和违约处理 1.参照完整性定义 示例 [例3]假设关系SC中一个元组表示一个学生选修的某门课程的成绩,(Sno,Cno)是主码。Sno,Cno分别参照引用Student表的主码和Course表的主码。定义SC中的参照完整性。 参照完整性 1.参照完整性定义 2.参照完整性检查和违约处理 2.参照完整性检查和违约处理 可能参照完整性的情况及违约处理 违约处理 示例 [例4]显式说明参照完整性的违约处理示例 Outline 实体完整性 参照完整性 用户定义的完整性 完整性约束命名子句 *域中的完整性限制 触发器 小结 用户定义的完整性 用户定义的完整性就是针对某一具体应用的数据必须满足的语义要求 RDBMS提供,而不必由应用程序承担 1. 属性上的约束条件的定义 属性上的约束条件的定义(续) 属性上的约束条件的定义(续) 属性上的约束条件的定义(续) 2.属性上的约束条件检查和违约处理 3.元组上的约束条件的定义 示例 4.元组上的约束条件检查和违约处理 Outline 实体完整性 参照完整性 用户定义的完整性 完整性约束命名子句 *域中的完整性限制 触发器 小结 完整性约束命名子句 示例 完整性约束命名子句(续) 示例 Outline 实体完整性 参照完整性 用户定义的完整性 完整性约束命名字句 *域中的完整性限制 触发器 小结 域中的完整性限制 域中的完整性限制(续) Outline 实体完整性 参照完整性 用户定义的完整性 完整性约束命名字句 *域中的完整性限制 触发器 小结 触发器 1.定义触发器 定义触发器(续) 定义触发器(续) 定义触发器(续) 示例 示例(续) 示例(续) 示例(续) 2.激活触发器 激活触发器(续) 3.删除触发器 小结 CONSTRAINT 约束 CONSTRAINT 完整性约束条件名 [PRIMARY KEY短语 |FOREIGN KEY短语 |CHECK短语] [例10] 建立学生登记表Student,要求学号在90000~99999之间,姓名不能取空值,年龄小于30,性别只能是“男”或“女”。 CREATE TABLE Student (Sno NUMERIC(6) CONSTRAINT C1 CHECK (Sno BETWEEN 90000 AND 99999), Sname CHAR(20) CONSTRAINT C2 NOT NULL, Sage NUMERIC(3) CONSTRAINT C3 CHECK (Sage 30), Ssex CHAR(2) CONSTRAINT C4 CHECK (Ssex IN ( 男,女)), CONSTRAINT StudentKey PRIMARY KEY(Sno) ); 在Student表上建立了5个约束条件,包括主码约束(命名为StudentKey)以及C1、C2、C3、C4四个列级约束。 2. 修改表中的完整性限制 使用ALTER TABLE语句修改表中的完整性限制 [例13] 修改表Student中的约束条件,要求学号改为在900000~999999之间,年龄由小于30改为小于40 可以先删除原来的约束条件,再增加新的约束条件 ALTER TABLE Student DROP CONSTRAINT C1; ALTER TABLE Student ADD CONSTRA
显示全部