[工学]数据库讲解5.ppt

  1. 1、本文档共120页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]数据库讲解5

数据库系统原理 普通高等教育十一五规划教材 数据库原理教程 范明、叶阳东、邱保志、职为梅 编著 科学出版社,2008 第5章 完整性与安全性 第5章 完整性与安全性 数据库是一种共享资源,是存放数据的场所 数据库系统需要保护数据库,防止用户有意或无意地破坏数据 数据的完整性和安全性是一个问题的两个方面,都是为了保护数据库中的数据 数据完整性旨在保护数据库中的数据,防止合法用户对数据库进行修改时破坏数据的一致性 数据安全性旨在保护数据库,防止未经授权的访问和恶意破坏和修改 第5章 完整性与安全性 5.1 完整性概述 5.2 实体完整性和参照完整性 5.3 域约束 5.4 用户定义的完整性 5.5 触发器 5.6 安全性概述 5.7 用户标识与鉴别 5.8 存取控制 5.9 SQL的授权 5.10 其他安全措施 5.11 小结 5.1 完整性概述 完整性概述 数据库的完整性是指数据库中的数据的正确性、一致性和相容性 数据库中的数据要成为有意义的信息,必须满足一定的语义约束约束条件 关系数据库上约束分为 实体完整性 参照完整性 用户定义的完整性 所有的约束都是语义约束,都是用户根据实际问题的语义指定的 实体完整性和参照完整性约束的含义是特定的,用户只需要说明关系的主码和外码,而不必再说明约束条件 对于其他约束(用户定义的完整性),用户需要使用一个谓词具体说明约束条件 约束分类 根据被约束的数据对象,完整性约束可以分为如下四类: 类型(域)约束:说明给定类型的合法取值 属性约束:说明属性的合法取值 关系约束:说明关系的合法取值 数据库约束:说明数据库的合法取值,通常涉及多个关系 实体完整性是一种关系约束 参照完整性是一种数据库约束 用户定义的完整性可以是上述四种约束的任何一种 约束分类(续) 约束还可以分静态约束和动态约束 静态约束是关于数据库正确状态的约束 动态约束是数据库从一种正确状态转移到另一种状态的转移约束 例如,对于婚姻状况,如下动态转移约束是正确的 未婚到已婚、已婚到离异、已婚到丧偶、离异到已婚、丧偶到已婚 对于最后学位,如下动态转移约束是正确的:学士到硕士、学士到博士、硕士到博士 说明: DDL允许用户在创建域的同时说明域上的约束条件,并且允许用户使用创建的域定义属性约束 属性约束、关系约束和参照完整性约束都可以在创建关系时说明 更一般地,约束是一个关于数据库对象的断言。DDL应当允许用户定义断言,使得用户可以定义更复杂约束 DBMS对完整性的支持 为了维护数据库的完整性,完整性控制应当作为DBMS核心机制,必须提供: 说明和定义完整性约束条件的方法 DBMS的DDL允许用户根据实际问题的语义说明和定义各种完整性约束条件 完整性检查机制 DBMS在数据更新可能破坏完整性时自动进行完整性检查 检查可以在更新操作执行时立即执行,也可以在事务提交时进行 违约处理 当数据更新违反完整性约束时,DBMS应当采取相应的措施,确保数据的完整性 DBMS对完整性的支持(续) 说明 数据库约束的检查是可延迟的,可以延迟到事务提交时进行 其他约束的检查是立即的,在可能导致违反完整性约束的更新时立即进行 所有数据库更新都不能破坏数据库的完整性 当更新违反参照完整性约束时存在多种可能的补救措施,系统可以允许更新,并自动采取相应的行动(见5.2节) 在其他情况下 (如违反实体完整性和违反用户定义的完整性约束), 违反完整性约束的更新通常被拒绝 DBMS也提供一些机制,使得用户可以说明对某些违反完整性约束的更新所采取的行动(见5.5节) 5.2 实体完整性与参照完整性 实体完整性 在关系数据库中,一个基本关系对应于一个实体集或联系集 实体完整性约束是一个关系内的约束 实体完整性规则 每个关系应该有一个主码,每个元组的主码值唯一确定该元组 主码的任何属性都不能取空值 何时可能破坏实体完整性 删除操作不会破坏实体完整性 插入新元组和修改某个(些)元组的主码值可能破坏实体完整性 何时检查实体完整性和处理措施 DBMS应当在插入新元组和修改元组的主码时自动检查是否导致违反实体完整性约束 拒绝导致破坏实体完整性约束的任何插入或修改 实体完整性(续) 判断主属性是否为空值是简单的 主码唯一性检查 为了有效地判定主码上的值是否唯一,通常DBMS自动在主码上建立索引(如B+树索引) 通过索引查找而不必访问任何元组就能确定主码上的值是否唯一 SQL对实体完整性的支持 用户只需要在创建基本表时说明关系的主码,系统就能够自动地保证实体完整性 SQL说明主码的方法已在第4章讨论 参照完整性 参照完整性约束是不同关系之间或同一关系的不同元组间的约束 参照完整性规则 参照关系R的任何元组在其外码FKR上的值或者等于被参照关系S的某个元组在主码Ks上的值,或者为空值

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档