文档详情

第五章数据库完整性报告.ppt

发布:2017-01-16约8.85千字共30页下载文档
文本预览下载声明
第五章 数据库完整性 §5.1 实体完整性 §5.2 参照完整性 §5.3 用户定义的完整性 §5.4 完整性约束命名子句 §5.6 触发器 数据库完整性 数据库的完整性: 指数据库的正确性、有效性和相容性,其目的是防止错误的数据进入数据库 即完整性体现是数据库能否真实地反映现实世界。其中: 正确性:指数据的合法性 有效性:指数据是否属于所定义域的有效范围 相容性:指表示同一事实的两个数据应当一致,不一致即是不相容的 完整性被破坏的原因: 由更新操作不遵守完整性约束条件引起的 DBMS为维护数据库的完整性所做的工作 提供定义完整性约束条件的机制 SQL标准使用DDL来描述完整性 提供完整性检查的方法 DBMS中检查数据是否满足完整性约束条件的机制 违约处理 DBMS若发现用户的操作违背了完整性约束条件,就采取措施进行违约处理 例1 将Student 表中的Sno属性定义为码 CREATE TABLE Student (Sno CHAR(9) , Sname CHAR(20) NOT NULL, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20) ); 实体完整性检查和违约处理 用PRIMARY KEY短语定义了关系的主码之后,每当用户程序对基本表进行插入或更新操作之前,RDBMS会对实体完整性进行检查: 检查主码值是否唯一,如果不唯一则拒绝插入或修改 检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改 检查主码值是否唯一的方法: 全表扫描 为主码建立一个索引 参照完整性检查和违约处理 对参照表和被参照表进行增删改操作时必须进行检查 外码能否接受空值的问题 (1)外码允许取空值: 学生(学号,姓名,性别,专业号,年龄) 专业(专业号,专业名) 学生关系(参照)→专业关系(被参照) (2)外码不允许取空值:    学生关系(被参照)←选课关系(参照) 对于参照完整性,除应该定义外码,还应定义外码是否允许取空值。一般地,系统采用默认方式,即拒绝。如果想让系统采用其它方式则必须在建表之时显式的说明 例4 显式说明参照完整性的违约处理示例  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) /*在表级定义参照完整性*/ ON DELETE CASCADE      /*当删除Student表中的元组时,级连删除SC表中相应的元组*/       ON UPDATE CASCADE,      /*当更新Student表中的Sno时,级连更新SC表中相应的元组*/ FOREIGN KEY (Cno) REFERENCES Course(Cno), /*在表级定义参照完整性*/       ON DELETE NO ACTION      /*当删除Course表中的元组造成了与SC表不一致时拒绝删除*/       ON UPDATE CASCADE,      /*当更新Course表中的Cno时,级连更新SC表中相应的元组*/ ); 1.不允许取空值 例5 在定义SC表时,说明Sno、Cno、Grade属性不允许取空值    CREATE TABLE SC (Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT NOT NULL, PRIMARY KEY (Sno, Cno)
显示全部
相似文档