中南大学数据库技术与管理课件7.2 数据库的完整性.pptVIP

中南大学数据库技术与管理课件7.2 数据库的完整性.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7.2 数据库的完整性 7.2.1 数据库完整性的含义 7.2.2 完整性约束的类型 7.2.3 完整性约束的定义方法 7.2.4 完整性约束的验证 7.2.1 数据库完整性的含义 数据库的完整性是指数据库中数据的正确性和相容性。 数据库的完整性和安全性是数据库安全保护的两个不同的方面。数据库的安全性保护数据库以防止不合法用户故意造成的破坏,数据库的完整性保护数据库以防止合法用户无意中造成的破坏。也可以说,安全性确保用户被允许做其想做的事情,完整性确保用户所做的事情是正确的。但从数据库的安全保护角度来讲,完整性和安全性又是密切相关的。 7.2.2 完整性约束的类型 1.由数据模型确定的完整性约束 由数据模型确定的完整性约束可以由数据库模式隐含地说明和定义,这种完整性约束又被称为数据模型的隐含约束。不同数据模型具有不同的隐含约束集合。然而,任何一种数据模型都不可能把现实世界所有的约束都包含到隐含约束中来。因此,数据模型还具有一些需要显式地定义到数据库模式上的约束,这种约束被称为数据模型的显式约束。此外数据模型还有第三种类型的约束——固有约束,即数据模型本身固有的、不需要特殊说明的约束。 7.2.2 完整性约束的类型 以下是层次模型、网状模型和关系模型的隐含约束和固有约束的实例。 (1)层次模型。关键字是层次模型隐含约束的实例。层次模型具有很多固有完整性约束,如根记录不能有父节点、每一个非根记录仅有一个父节点等。 (2)网状模型。网状模型中的关键字、插入约束等是其隐含约束的实例。网状模型也有很多固有完整性约束,如成员约束等。 (3)关系模型。关键字、实体完整性约束和参照完整性约束是关系模型隐含约束的实例。关系模型的固有约束很多,如满足第一范式的关系模式的所有属性值必须是原子数据等。 7.2.2 完整性约束的类型 2.由数据库应用确定的完整性约束 数据库上的大部分语义完整性约束是由数据库应用确定的。这类完整性约束分为状态约束和变迁约束两类,在数据库管理系统中这两类约束都被视为显式约束。 (1)状态约束。在某一时刻数据库中的所有数据实例构成了数据库的一个状态。数据库的状态约束也称静态约束,是所有数据库状态必须满足的约束。每当数据库被修改时,数据库管理系统都要进行状态约束的检查,以保证状态约束始终被满足。 7.2.2 完整性约束的类型 (2)变迁约束。数据库变迁约束也称动态约束,是指数据库从一个状态向另一个状态转化过程中必须遵循的约束条件,如职工年龄在更改时只能增长、职工工资在调整时新值不得少于旧值等。变迁约束既不作用于修改前的状态又不作用于修改后的状态,而是规定了状态变迁时必须遵循的规则。由于其动态特性,变迁约束很难实施。变迁约束通常用显式约束表示。 7.2.2 完整性约束的类型 综上所述,数据库完整性约束的分类如图7.1所示: 7.2.3 完整性约束的定义方法 数据模型确定的三类完整性约束中,固有约束是数据模型本身所固有的,不需用数据定义语言另行定义;隐含约束需要在数据库模式定义时用数据定义语言定义;显式约束的定义方法有过程化定义方法、断言定义方法和触发器定义方法等。 1.过程化定义方法 显式约束的过程化定义方法是把显式约束作为一个过程,由程序员编码到每个更新数据库的事务中。例如,要定义和实现完整性约束“雇员的工资不能高于其部门经理”,我们可以在每个有关的数据库更新事务如修改雇员工资、任命部门经理,插入新雇员中增加验证雇员工资不能高于其部门经理工资的过程。如果违反约束条件,则相应的数据库更新事务将被异常中止。 7.2.3 完整性约束的定义方法 使用过程化定义方法,完整性约束的验证程序可以由通用程序设计语言编制。这种方法既为程序员编制高效率的完整性验证程序提供了有利条件,同时也给程序员带来了很大负担。程序员必须清楚他所编码的事务所涉及的所有完整性约束,并为每一个约束编制一个验证过程,程序员的任何误解、疏忽和遗漏都将导致数据库的不正确。目前,过程化定义方法已经被许多数据库管理系统广泛采用。 数据库的完整性约束经常是随实际应用的变化而变化的。显式约束的过程化定义方法有一个严重缺点:一旦完整性约束发生变化,相应事务的完整性验证程序就必须被修改。 7.2.3 完整性约束的定义方法 2.断言定义方法 断言定义方法使用一种约束定义语言来定义显式约束,是一种形式化方法。约束定义语言通常是关系演算语言的变种。显式约束的断言定义方法把约束集合和完整性验证子系统严格分开。约束集合存储在约束库中,完整性验证子系统存取约束库中的约束,将其应用到相应的数据库更新事务中。 在显式约束的断言定义方法中,完整性约束被称为完

文档评论(0)

ormition + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档