第八章数据库完整性.ppt
文本预览下载声明
* * 主讲:武彤 《数据库系统原理》 第八章 数据库完整性 本章导读: 内容: 讲解RDBMS完整性实现的机制,包括完整性约 束定义机制、 完整性检查机制和违背完整性约束 条件时RDBMS应采取的动作等。 要求: 1)理解RDBMS实现实体完整性、参照完整性 、用户定义完整性的方法。 2)会使用完整性约束命名子句。 3)会使用SQL进行域中完整性限制。 4)了解通过触发器实现数据库完整性。 第八章 数据库完整性 前导内容: 《数据库系统原理》 主讲:武彤 数据库的完整性: 是指数据的正确性和相容性。是为了防止数 据库中存在不符合语义的数据。 数据库完整性和安全性的区别: 完整性检查和控制的防范对象是不合语义的、 不正确的数据,防止它们进入数据库。安全性控 制的防范对象是非法用户和非法操作,防止他们 对数据库数据的非法存取。 第八章 数据库完整性 前导内容: 《数据库系统原理》 主讲:武彤 为维护数据库的完整性,DBMS必须具有以下功能: 1、提供定义完整性约束条件的机制。 2、提供完整性检查的机制。 3、违约处理。 完整性控制功能已经成为DBMS核心支持的功 能,从而能够为所有的用户和所有的应用提供一致 的数据库完整性。因为由应用程序来实现完整性控 制是有漏洞的。有的应用程序定义的完整性约束条 件可能被其他应用程序破坏,数据库数据的正确性 仍然无法保障。 第八章 数据库完整性 5.1 实体完整性 《数据库系统原理》 主讲:武彤 关系模型的实体完整性在CREATE TABLE中 用PRIMARY KEY定义。 对单属性构成的码有两种说明方法: 1)定义为列级约束条件; 2)定义为表级约束条件。 对多个属性构成的码只有一种说明方法: 定义为表级约束条件。 例:(见P152例1、例2) 一、实体完整性定义 第八章 数据库完整性 5.1 实体完整性 《数据库系统原理》 主讲:武彤 二、实体完整性检查和违约处理 每当用户程序对基本表插入一条记录或者 对主码列进行更新操作时, RDBMS 将按照实 体完整性规则自动进行如下检查: 1)检查主码值是否唯一,如果不唯一则拒 绝插入或修改。 2)检查主码的各个属性是否为空,只要有 一个为空就拒绝插入或修改。 检查方法: (见P153图5.1~图5.2) 第八章 数据库完整性 5.2 参照完整性 《数据库系统原理》 主讲:武彤 一、参照完整性的定义 关系模型的参照完整性在CREATE TABLE中 用 FOREIGN KEY 短语定义哪些列为外码,用 REFERENCES短语指明这些外码参照哪些表的主 码。 例:(见P154例3) 二、参照完整性检查和违约处理 (见P155表5.1) 违约处理: 1)拒绝执行;2)级连操作;3)设置为空值。 第八章 数据库完整性 5.2 参照完整性 《数据库系统原理》 主讲:武彤 一般情况,当对参照表和被参照表的操作违 反了参照完整性,系统选用默认策略,即拒绝执 行。如果想让系统采用其他的策略则必须在创建 表的时候显式地加以说明。 例:(见P156例4) 第八章 数据库完整性 5.3 用户定义的完整性 《数据库系统原理》 主讲:武彤 用户定义的完整性就是针对某一具体应用的 数据必须满足的语义要求。目前的RDBMS 都提供 了定义和检验这类完整性的机制,使用了和实体 完整性、参照完整性相同的技术和方法来处理它 们,而不必由应用程序承担这一切。 一、属性上的约束条件的定义 有如下对属性值限制: 1)列值非空。 2)列值唯一。 3)检查列值是否满足一个布尔表达式。 (见P156~157例5~例8) 第八章 数据库完整性 5.3 用户定义的完整性 《数据库系统原理》 主讲:武彤 二、属性上的约束条件检查和违约处理 当往表中插入元组或修改属性的值时,RDBMS 就检查属性上的约束条件是否被满足,如果不满 足则操作被拒绝执行。 三、元组上的约束条件的定义 在CREATE TABLE语句中可以用CHECK短 语定义元组上的约束条件,即元组级的限制。 例:(见P158例9) 四、元组上的约束条件检查和违约处理 第八章 数据库完整性 5.4 完整性约束命名子句 《数据库系统原理》 主讲:武彤 一、完整性约束命名子句 语句格式: CONSTRAINT 完整性约束条件名 [PRIMARY KEY 短语|FOREIGN KEY
显示全部