【数据库原理】数据库完整性_第1页
【数据库原理】数据库完整性_第2页
【数据库原理】数据库完整性_第3页
【数据库原理】数据库完整性_第4页
【数据库原理】数据库完整性_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、本章内容提要 数据库中的数据是否具备正确、相容关系到数据库系统能否真实地反映现实世界,因此维护数据库的完整性是非常重要的。 维护数据库 (1)制定完整性约束条件 (2)进行完整性检查(控制),第十章 数据库完整性,本章重点: 完整性约束条件 完整性控制 本章难点: 完整性约束条件 完整性控制,第十章 数据库完整性,数据库的完整性是指数据的正确、有效性和相容性(前后一致)。 完整性是对数据库存储数据的限制,是对数据的约束条件。对数据库存储的限制各种各样。如关系模式中的函数依赖,是对数据项之间相关性的一种限制。 数据的正确、有效性可以简单的视为是对数据本身而言。 数据的相容性可以简单的视为是对数据

2、之间的相互关系而言。,第十章 数据库完整性,为维护数据库的完整性,DBMS提供了一种完整性检查机制来检查数据库中的数据,看其是否满足语义规定的条件。 完整性检查(控制)是指DBMS用一定机制来满足规定的约束条件,是防止合法用户无意识操作造成的数据输入、输出错误即垃圾进、垃圾出(Garbage in Garbage out ),破坏数据的正确、有效和相容,以保证数据库中不存在不符合语义的数据。,第十章 数据库完整性,完整性检查是围绕完整性约束条件进行的,因此完整性约束条件是完整性控制机制的核心。 在关系模型中,最常见的是三类: (A)实体完整性 (B)参照完整性 (C)用户定义完整性,第十章 数

3、据库完整性,一、完整性约束条件分类: (1)完整性约束条件作用的对象: (A)关系 (B)元组 (C)列。 其中: (A)关系的约束是若干元组间、关系集合上以及关系之间的联系的约束。 (B)元组的约束是元组中各个字段间的联系的约束。 (C)列约束主要是列的类型、取值范围、精度、排序等的约束条件。,第十章 数据库完整性10.1 完整性约束条件,第十章 数据库完整性10.1 完整性约束条件,(2)完整性约束条件涉及的对象的状态: (A)静态约束 (B)动态约束 其中: (A)静态约束是指数据库每一确定状态时的数据对象所应满足的约束条件,它是反映数据库状态合理性的约束,这是最重要的一类完整性约束。

4、(B)动态约束是指数据库从一种状态转变为另一种状态时新、旧值之间所应满足的约束条件,它是反映数据库状态变迁的约束。,综合上述两个方面,将完整性约束条件分为六类: 一、静态列级约束 二、静态元组约束 三、静态关系约束 四、动态列级约束 五、动态元组约束 六、动态关系约束,第十章 数据库完整性10.1 完整性约束条件,第十章 数据库完整性10.1 完整性约束条件,一、静态列级约束 静态列级约束是对一个列的取值域的说明,这是最常用也最容易实现的一类完整性约束。 包括以下几方面: 1. 对数据类型的约束,包括数据的类型、长度、单位、精度等 2. 对数据格式的约束 3. 对取值范围或取值集合的约束。 4

5、. 对空值的约束 5. 其他约束,第十章 数据库完整性10.1 完整性约束条件,二、静态元组约束 一个元组是由若干个列值组成的,静态元组约束就是规定元组的各个列之间的约束关系。,第十章 数据库完整性10.1 完整性约束条件,第十章 数据库完整性10.1 完整性约束条件,三、静态关系约束 在一个关系的各个元组之间或者若干关系之间常常存在各种联系或约束。 常见的静态关系约束有: 1. 实体完整性约束。 2. 参照完整性约束。 实体完整性约束和参照完整性约束是关系模型的两个极其重要的约束,称为关系的两个不变性。 3. 函数依赖约束。大部分函数依赖约束都在关系模式中定义。 4. 统计约束。即字段值与关

6、系中多个元组的统计值之间的约束关系。,第十章 数据库完整性10.1 完整性约束条件,四、动态列级约束 动态列级约束是修改列定义或列值时应满足的约束条件。 包括下面两方面: 1. 修改列定义时的约束 例如,将允许空值的列改为不允许空值时,如果该列目前已存在空值,则拒绝这种修改。 2. 修改列值时的约束 修改列值有时需要参照其旧值,并且新旧值之间需要满足某种约束条件。 例如,职工工资调整不得低于其原来工资,学生年龄只能增长等。,第十章 数据库完整性10.1 完整性约束条件,五、动态元组约束 动态元组约束是指修改元组的值时元组中各个字段间需要满足某种约束条件。 例如职工工资调整时新工资不得低于 原工

7、资+工龄*1.5,等等。,第十章 数据库完整性10.1 完整性约束条件,六、动态关系约束 动态关系约束是加在关系变化前后状态上的限制条件。 例如事务一致性、原子性等约束条件。,第十章 数据库完整性10.2 完整性控制,一、完整性控制机制的功能 DBMS的完整性控制机制应具有三个方面的功能: 1. 定义功能提供定义完整性约束条件的机制。 2. 检查功能检查用户发出的操作请求是否违背了完整性约束条件。 3. 违约响应如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。,第十章 数据库完整性10.2 完整性控制,一个完善的完整性控制机制应该允许用户定义所有六类完整性

8、约束条件。 它们可能非常简单,也可能极为复杂。 检查是否违背完整性约束的时机: (A)在一条语句执行完后立即检查,我们称这类约束为立即执行约束(Immediate constraints)。 (B)完整性检查需要延迟到整个事务执行结束后再进行,检查正确方可提交,我们称这类约束为延迟执行约束(Deferred constraints)。,第十章 数据库完整性10.2 完整性控制,二、完整性规则的内容 一条完整性规则可以表示为五元组 (D,O,A,C,P) 其中: D(Data) 约束作用的数据对象; O(Operation) 触发完整性检查的数据库操作,即当用户发出什么操作请求时需要检查该完整性

9、规则,是立即检查还是延迟检查; A(Assertion) 数据对象必须满足的断言或语义约束,这是规则的主体: C(Condition) 选择A作用的数据对象值的谓词: P(Procedure) 违反完整性规则时触发的过程。,第十章 数据库完整性10.2 完整性控制,例1:,在关系S(Sno,Sname,Ssex,Sdept)中“学号不能为空”的约束中五元组 (D,O,A,C,P)为: D 约束作用的对象为Sno属性。 O 插入或修改S元组时 A Sno不能为空 C 无(A可作用于所有记录的Sno属性) P 拒绝执行该操作,第十章 数据库完整性10.2 完整性控制,例2:,在关系T(职工号,姓名

10、,职称, 工资)中要求“教授工资不得低于1000元”的约束中: D 约束作用的对象为“工资”属性 O 插入或修改职工元组时 A “工资”不能小于1000 C 职称=教授(A仅作用于职称=教授的记录) P 拒绝执行该操作,第十章 数据库完整性10.2 完整性控制,例3: 对S表中学生年龄定义完整性规则: After Updating S.Sage; S.Sage = 16 and S.Sage=30 ELSE Do: Set return code to “S.Sage No Right “ Reject; End;,第十章 数据库完整性10.2 完整性控制,在关系系统中,最重要的完整性约束是实

11、体完整性和参照完整性,其他完整性约束条件则可以归入用户定义的完整性。 下面详细讨论实现参照完整性要考虑的几个问题: 1. 外码能否接受空值问题 2. 在被参照关系中删除元组的问题 3. 在参照关系中插入元组时的问题 4. 修改关系中主码的问题,第十章 数据库完整性10.2 完整性控制,1. 外码能否接受空值问题 在实现参照完整性时,系统除了应该提供定义外码的机制,还应提供定义外码列是否允许空值的机制。 例1: 学生(学号,姓名,性别,专业号,年龄) 专业(专业号,专业名) 在学生关系中的专业号列可以取空值。 例2: 学生(学号,姓名,性别,专业号,年龄) 课程(课程号,课程名,学分) 选修(学

12、号 ,课程号,成绩) 选修关系中的学号列不能取空值o,第十章 数据库完整性10.2 完整性控制,2. 在被参照关系中删除元组的问题 一般地,当删除被参照关系的某个元组,而参照关系存在若干元组,其外码值与被参照关系删除元组的主码值相同,这时可有三种不同的策略:(1) 级联删除(CASCADES) (2) 受限删除(RESTRICTED) 仅当参照关系中没有任何元组的外码值与被参照关系中要删除元组的主码值相同时,系统才执行删除操作,否则拒绝此删除操作。 (3) 置空值删除(NULLIFIES) 删除被参照关系的元组,并将参照关系中相应元组的外码值置空值。 这三种处理方法,哪一种是正确的,要依应用环

13、境的语义来定,第十章 数据库完整性10.2 完整性控制,3. 在参照关系中插入元组时的问题 一般地,当参照关系插入某个元组,而被参照关系不存在相应的元组,其主码值与参照关系插入元组的外码值相同,这时可有以下策略: (1)受限插入 仅当被参照关系中存在相应的元组,其主码值与参照关系插入元组的外码值相同时,系统才执行插入操作,否则拒绝此操作。 (2)递归插入 首先向被参照关系中插入相应的元组,其主码值等于参照关系插入元组的外码值,然后向参照关系插入元组。,第十章 数据库完整性10.2 完整性控制,4. 修改关系中主码的问题 (1) 不允许修改主码 在有些RDBMS中,修改关系主码的操作是不允许的。 (2) 允许修改主码 在有些RDBMS中,允许修改关系主码,但必须保证主码的唯一性和非空,否则拒绝修改。,第十章 数据库完整性10.2 完整性控制,可见,DBMS在实现参照完整性时,除了要提供定义主码、外码的机制外,还需要提供不同的策略供用户选择。 选择哪种策略,要根据应用环境的要求确定。,第十章 数据库完整性

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论