- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
An Introduction to Database System 第五章 数据库完整性 复习:完整性约束条件 三类完整性: 实体完整性 参照完整性 用户自定义的完整性 数据完整性 数据库完整性 第五章 数据库完整性 5.1 实体完整性 5.2 参照完整性 5.3 用户定义的完整性 5.4 完整性约束命名字句 5.5 触发器 5.6 小结 5.1 实体完整性 5.1 实体完整性 5.1 实体完整性 5.2 参照完整性 5.2 参照完整性 5.2 参照完整性 5.2 参照完整性 5.3 用户定义的完整性 5.3 用户定义的完整性 5.3 用户定义的完整性 5.3 用户定义的完整性 5.3 用户定义的完整性 5.4 完整性约束命名子句 5.4 完整性约束命名子句 约束简写_表名_约束的列名 5.6 触发器 5.6 SQL 流程控制语句 5.6 SQL 流程控制语句 5.6 SQL 流程控制语句 5.6 SQL 流程控制语句 5.6 SQL 流程控制语句 5.7 小结 数据库的完整性是为了保证数据库中存储的数据是正确的. RDBMS完整性实现的机制 完整性约束定义机制 完整性检查机制 违背完整性约束条件时RDBMS应采取的动作 * * College of Computer Science and Technology of Zhoukou Normal University 周口师范学院 – 计算机科学与技术学院 六种约束条件 主键约束 外键约束 唯一性约束 检查约束 默认值约束 空值约束 数据的完整性 数据库的完整性是指数据的正确性和相容性。 完整性 VS 安全性(两个不同的概念) 数据完整性是为了防止数据库中存在不符合语义的数据,即防止数据库中存在不正确的数据。防范的对象是不合语义的、不正确的数据。 数据安全性是保护数据库防止恶意的破坏和非法的存取。防范的对象是非法用户和非法操作。 为维护数据库的完整性,DBMS必须: 1.提供定义完整性约束条件的机制 2.提供完整性检查的方法 3.违约处理 实体完整性 参照完整性 用户自定义的完整性 拒绝 级联 设置为空值 第一讲 5.1.1 实体完整性定义 回忆定义? 关系数据库的实体完整性的定义,有两种方式: ① 创建表时:Primary Key【单/多属性构成主键问题】 ② 修改表定义时:添加Primary Key 约束 具体实例参照:P152 5.1.2 实体完整性检查和违约处理 当对关系定义主码后,每当用户程序对基本表添加记录或更新主码键值时,RDBMS将按照实体完整性规则自动检查记录的完整性: ① 主码值是否唯一,如果不唯一则拒绝此次操作。 ② 主码的各个属性(主属性)是否为空,如果有一个为空则拒绝此次操作。 并且现行的RDBMS会给出相应的错误提示。 5.1.2 实体完整性检查和违约处理 核查记录主码值是否唯一的方法:全表扫描,即依次判断表中的每一条记录的主码值是否与即将插入的记录主码值重复。(教材P153页) 全表扫描一般情况是十分耗时,尤其在数据记录量较多的情况下。为了避免全表扫描,RDBMS核心一般都在主码字段自动建立B+树的聚簇索引,从而提高检索效率! 如何保证? 回忆:RDBMS默认会为主码上建立一个聚簇索引! 5.2.1 参照完整性定义 5.2.2 参照完整性检查和违约处理 关系数据库的参照完整性在创建表或修改表时,使用Foreign Key 短语定义哪些列为外键,用References短语指明这些外码参照哪些表的主码。示例:P154 参照完整性定义完毕,该约束就将相关联的两个表中的相应的元组联系起来了,因此为保证数据的有效性,必须对相关的更新操作(增、删、改)进行完整性检查。 回忆定义? 5.2.2 参照完整性检查和违约处理 可能破坏参照完整性的情况及违约处理 拒绝/级连修改/设置为空值 可能破坏参照完整性 修改主码值 拒绝/级连删除/设置为空值 可能破坏参照完整性 删除元组 拒绝 修改外码值 可能破坏参照完整性 拒绝 插入元组 可能破坏参照完整性 违约处理 参照表(SC表) 被参照表(Student表) 如果为定义参照完整性违反策略,当违反参照完整性时,系统选择默认策略;如果想让系统采用其他策略则必须显式说明。 5.2.2 参照完整性检查和违约处理 参照完整性违约处理策略: 1 拒绝(No Action)执行 该策略一般设置为各个RDBMS的默认策略。 2 级联(Cascade)操作 自动删除或更新参照表的所有相关联的记录。 3 设置为空值 主要涉及参照表中的相应字段是否允许空值的考虑。 举例:定义成绩表,并显式设置其参照完整性违约策略。
文档评论(0)