资源预览内容
第1页 / 共82页
第2页 / 共82页
第3页 / 共82页
第4页 / 共82页
第5页 / 共82页
第6页 / 共82页
第7页 / 共82页
第8页 / 共82页
第9页 / 共82页
第10页 / 共82页
亲,该文档总共82页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
数据库系统概论 An Introduction to Database System 第五章 数据库完整性 An Introduction to Database System 数据库完整性 v 数据库的完整性 数据的正确性和相容性 v 数据的完整性和安全性是两个不同概念 数据的完整性 防止数据库中存在不符合语义的数据 也就是防止数据库中存在不正确的数据 防范对象 不合语义的 不正确的数据 数据的安全性 保护数据库防止恶意的破坏和非法的存取 防范对象 非法用户和非法操作 An Introduction to Database System 数据库完整性 续 为维护数据库的完整性 DBMS必须 n1 提供定义完整性约束条件的机制 n2 提供完整性检查的方法 n3 违约处理 An Introduction to Database System 一 完整性约约束条件 完整性约束条件作用的对象 v 列 对属性的取值类型 范围 精度等的约束条件 v 元组 对元组中各个属性列间的联系的约束 v 关系 对若干元组间 关系集合上以及关系之间的 联系的约束 An Introduction to Database System 完整性约约束条件 续续 v静态 对静态对 象的约束是反映数据库状态合 理性的约束 v动态 对动态对 象的约束是反映数据库状态变 迁的约束 An Introduction to Database System 完整性约约束条件分类类 六类完整性约束条件 v 静态列级约束 v 静态元组约束 v 静态关系约束 v 动态列级约束 v 动态元组约束 v 动态关系约束 An Introduction to Database System 完整性约约束条件 续续 对象状态 动态列级约束 动态元组约束 动态关系约束 动态 静态列级约束 静态元组约束 静态关系约束 静态 列 元组 关系 对象粒度 An Introduction to Database System 完整性约约束条件 续续 1 静态列级约 束 v静态列级约束 对的取值域的说明 v最常见 最简单 最容易实现的一类完整性约 束 An Introduction to Database System 完整性约约束条件 续续 v 五类静态列级约束 1 数据类型约束 数据的类型 长度 单位 精度等 例 学生姓名的数据类型为字符型 长度为8 2 对数据格式的约束 例 学号 前两位表示入学年份 后四位为顺 序编号 日期 YY MM DD An Introduction to Database System 完整性约约束条件 续续 3 取值范围或取值集合的约束 例 规定成绩的取值范围为 0 100 年龄的取值范围为 14 29 性别的取值集合为 男 女 4 对空值的约束 空值 未定义或未知的值 空值 与零值和空格不同 有的列允许空值 有的则不允许 如成绩可为空值 5 其他约束 例 关于列的排序说明 组合列等 An Introduction to Database System 完整性约约束条件 续续 2 静态元组约 束 规定元组的各个列之间的约束关系 例 订货关系中发货量 700元 静态元组约 束只局限在元组上 An Introduction to Database System 完整性约约束条件 续续 3 静态关系约束 关系的各个元组之间或若干关系之间存在的各种联系或 约束 常见静态关系约束 1 实体完整性约束 2 参照完整性约束 3 函数依赖约 束 4 统计约 束 An Introduction to Database System 统计约统计约 束 v 定义某个字段值一个关系多个元组的统计值 之间的约束 关系 v 例 职工平均工资的2倍 部门经理的工资 原来工资 年龄只能增长 An Introduction to Database System 完整性约约束条件 续续 5 动态 元组约 束 修改元组值 各个字段之间要满足的约束条件 例 职工工资调 整不得低于其原来工资 工龄 1 5 An Introduction to Database System 完整性约约束条件 续续 6 动态 关系约束 关系变化前后状态 限制条件 例 事务一致性 原子性等约束条件 An Introduction to Database System 完整性约约束条件小结结 粒 度 状态 列 级 元 组 级 关 系 级 静 态 列定义 类型 格式 值域 空值 元组值应满 足的 条件 实体完整性约束 参照完整性约束 函数依赖约束 统计约 束 动 态 改变列定 义或列值 元组新旧值之间应 满足的约束条件 关系新旧状态间应 满足的约束条件 An Introduction to Database System 二 DBMS的完整性控制机制 检查 功能 v立即执行的约束 Immediate constraints 语句执行完后立即检查 是否违背完整性约 束 v 延迟执行的约束 Deferred constrainsts 完整性检查延迟到整个事务执行结束后 进行 An Introduction to Database System DBMS的完整性控制机制 续续 例 银行数据库中 借贷总金额应平衡 的约束 就应该是延迟执行的约束 从账号A转一笔钱到账号B为一个事务 从账号A转出 去钱后账就不平了 必须等转入账号B后账才能重新 平衡 这时才能进行完整性检查 An Introduction to Database System 三 违约违约 反应应 拒绝该操作 其他处理方法 An Introduction to Database System DBMS的完整性控制机制 续续 完整性规则五元组表示 D O A C P v D Data 约束作用的数据对象 v O Operation 触发完整性检查 的数据库操作 当用户发 出什么操作请求时需要检查该 完整性规则 是立即检查还 是延迟检查 v A Assertion 数据对象必须满 足的断言或语义约 束这是规则 的主体 v C Condition 选择 A作用的数据对象值的谓词 v P Procedure 违反完整性规则时 触发的过程 An Introduction to Database System DBMS的完整性控制机制 续续 例1 在 学号不能为空 的约束中 D 约束作用的对象为Sno属性 O 插入或修改Student 元组时 A Sno不能为空 C 无 A可作用于所有记录的Sno属性 P 拒绝执行该操作 An Introduction to Database System DBMS的完整性控制机制 续续 例2 在 教授工资不得低于1000元 的约束中 D 约束作用的对象为工资Sal属性 O 插入或修改职工元组时 A Sal不能小于1000 C 职称 教授 A仅作用于职称 教授 的记录 P 拒绝执 行该操作 An Introduction to Database System 关系系统统三类类完整性的实现实现 v 关系数据库系统都提供了定义和检查实 体完整性 参 照完整性和用户定义的完整性的功能 v 违反实体完整性规则和用户定义的完整性规则的操 作 一般是拒绝执行 v 违反参照完整性的操作 拒绝执 行 接受这个操作 同时执 行一些附加的操作 以保证数据库的 状态正确 An Introduction to Database System 第五章 数据库完整性 5 1 实体完整性 5 2 参照完整性 5 3 用户定义的完整性 5 4 完整性约束命名字句 5 5 域中的完整性限制 5 6 触发器 5 7 小结 An Introduction to Database System 5 1 实体完整性 v5 1 1 实体完整性定义 v5 1 2 实体完整性检查和违约处理 An Introduction to Database System 5 1 1 实体完整性定义 v 关系模型的实体完整性 CREATE TABLE中用PRIMARY KEY定义 v 单属性构成的码有两种说明方法 定义为列级约束条件 定义为表级约束条件 v 对多个属性构成的码只有一种说明方法 定义为表级约束条件 An Introduction to Database System 实体完整性定义 续 例1 将Student表中的Sno属性定义为码 1 在列级定义主码 CREATE TABLE Student Sno CHAR 9 PRIMARY KEY Sname CHAR 20 NOT NULL Ssex CHAR 2 Sage SMALLINT Sdept CHAR 20 An Introduction to Database System 实体完整性定义 续 2 在表级定义主码 CREATE TABLE Student Sno CHAR 9 Sname CHAR 20 NOT NULL Ssex CHAR 2 Sage SMALLINT Sdept CHAR 20 PRIMARY KEY Sno An Introduction to Database System 实体完整性定义 续 例2 将SC表中的Sno Cno属性组定义为码 CREATE TABLE SC Sno CHAR 9 NOT NULL Cno CHAR 4 NOT NULL Grade SMALLINT PRIMARY KEY Sno Cno 只能在表级定义主码 An Introduction to Database System 5 1 实体完整性 v5 1 1 实体完整性定义 v5 1 2 实体完整性检查和违约处理 An Introduction to Database System 5 1 2 实体完整性检查和违约处理 v 插入或对主码列进行更新操作时 RDBMS按照实体完整 性规则自动进行检查 包括 1 检查主码值是否唯一 如果不唯一则拒绝插入或修改 2 检查主码的各个属性是否为空 只要有一个为空就拒绝插 入或修改 An Introduction to Database System 实体完整性检查和违约处理 续 v 检查记录中主码值是否唯一的一种方法是进行全表扫描 An Introduction to Database System 实体完整性检查和违约处理 续 v索引 An Introduction to Database System 第五章 数据库完整性 5 1 实体完整性 5 2 参照完整性 5 3 用户定义的完整性 5 4 完整性约束命名字句 5 5 域中的完整性限制 5 6 触发器 5 7 小结 An Introduction to Database System 5 2 参照完整性 v5 2 1 参照完整性定义 v5 2 2 参照完整性检查和违约处理 An Introduction to Database System 5 2 1 参照完整性定义 v关系模型的参照完整性定义 在CREATE TABLE中用FOREIGN KEY短语定义哪些 列为外码 用REFERENCES短语指明这些外码参照哪些表的主码 An Introduction to Database System 参照完整性定义 续 例如 关系SC中一个元组表示一个学生选修的某门课程的成绩 Sno Cno 是主码 Sno Cno分别参照引用Student表的 主码和Course表的主码 例3 定义SC中的参照完整性 CREATE TABLE SC Sno CHAR 9 NOT NULL Cno CHAR 4 NOT NULL Grade SMALLINT PRIMARY KEY Sno Cno 在表级定义实体完整性 FOREIGN KEY Sno REFERENCES Student Sno 在表级定义参照完整性 FOREIGN KEY Cno REFERENCES Course Cno 在表级定义参照完整性 An Introduction to
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号