数据库完整性 第 10 章 完整性约束条件 完整性控制 Oracle 的完整性. 什么是数据库的完整性  数据的正确性和相容性  防止不合语义的数据进入数据库 例 : 学生的年龄必须是整数,取值范围为 14--29 ; 学生的性别只能是男或女; 学生的学号一定是唯一的; 学生所在的系必须是学校开设的系。

Slides:



Advertisements
Similar presentations
1 of 11 藝術 - 日本模型 組別: S102C908-7 組員: 劉柏余 鄭宇釩.
Advertisements

教育技术装备统计系统 使用培训 教育部基础教育司 教育部教育管理信息中心.
全民國防教育宣導 暨國防教育影片欣賞與討論.
TJ ESH Health Center Mar. 09, 2005
工业和信息化部半导体照明技术标准工作组 工业和信息化部平板显示技术标准工作组 中 国 电 子 技 术 标 准 化 研 究 院
油茶良种繁育技术 福建省林业科学研究院 李志真 联系电话:
第2章 資料庫系統 2-1 資料庫環境的四大組成元件 2-2 ANSI/SPARC的三層資料庫系統架構
第六章 数据库设计.
隆力奇定制营销事业部 时间: 编号:LLQNA 专业美发、护发 洗发水系列 新产品培训 未经许可,严禁转载.
数据库系统概论 华中科技大学能源与动力工程学院
第2章 数据模型 本章学习要求: 1. 层次数据模型、网状数据模型 了解层次及网状数据模型的基本概念和结构。 2. 关系数据模型
  中国技术交易信息服务平台 中国技术市场管理促进中心.
1.1 Oracle数据库简介 —Oracle Database 11g 课程.
Access数据库程序设计 总复习.
管理資訊系統 David Kroenke 資料庫處理 第4章.
第3章 关系数据库的基本理论 冯万利.
第六章 数据库和ADO.NET 褚龙现 软件学院.
王品集團 指導老師:吳桂桂老師 組員: 宋宛臻 鄭淑樺 何玉鶯 林貝芯
高等学校实验室信息系统 的使用及指标体系说明
数据库概述 简而言之,数据库(DataBase)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。如今,已经存在了Oracle、SQL Server、MySQL等诸多优秀的数据库。在这一章中将讲解的内容包括。
数据库原理及设计 --作业.
高等学校实验室信息系统 的使用及指标体系说明
述 职 报 告 单 位:机械学院 实践教学部 述职人:钮平章.
案例研究 —— 美国反恐监视名单数据库的难题.
綜合活動科 教學資源研發成果發表 「學生自治會活動」 理念與實例 報告人:國立台中一中黃俊奇、廖財固.
第5章 数据库保护 之事务.
第七章 数据库管理系统.
数据库系统概论 第 三 版 主 讲: 李明东. 数据库系统概论 第 三 版 主 讲: 李明东.
数据库应用技术 天津大学计算机基础教学部 2013年9月.
為有特殊教育需要學生 提供特別評估安排 教育局 2011年12月2日.
第 十三章 微生物在食品发酵工业的应用.
数据库原理 Database Principles 第五章 数据库完整性 Database Principles.
数据库原理与应用     制作人:王春玲         黄金燕         张惠萍         陈志泊 人民邮电出版社.
什麼是教育行動研究 ◎從例子中發現 行動研究的特色為何?.
第4章 数据库技术及应用 软件开发技术基础 计算机教学实验中心 2006.
An Introduction to Database System
主机DB2数据库应用与编程 任课老师:王湖南 四川大学计算机(软件)学院.
第四章 关系系统及其查询优化 这一章包括两个内容,一是关系系统(关系数据库系统的简称),二是关系系统的查询优化。第一部分讨论关系系统的定义和分类;第二部分讨论关系系统中查询优化的概念、查询优化的基本原理和技术。
第5讲 分组查询 IBM Confidential.
清華大學 成績等級制初步規劃說明
Oracle数据库入门.
数据库技术 第十章 数据库完整性 中国科学技术大学网络学院 阚卫华.
第四章:触发器   触发器类似于过程、函数,因为它们都是拥有说明部分、语句执行部分和异常处理部分的有名的PL/SQL块。与包类似,触发器必须存储在数据库中,并且不能被块进行本地化说明。但是,对于过程而言,可以从另一个块中通过过程调用显式地执行一个过程,同时在调用时可以传递参数。对于触发器而言,当触发事件发生时就会显式地执行该触发器,并且触发器不接受参数。
作业4讲评.
ORACLE 第五讲 PL/SQL编程基础.
数据库技术 第三章 关系数据库标准语言SQL 中国科学技术大学网络学院 阚卫华.
分布式数据库系统及其应用.
第4章 SQL语言基础及数据库定义 4.1 基本概念 4.2 SQL Server 提供的主要数据类型 4.3 数据定义.
Advanced Database Management System
教 师:曾晓东 电 话: 数据库技术 教 师:曾晓东 电 话:
实验5 系统分析与建模工具PowerDesigner
Microsoft SQL Server 2000 李金双.
第16讲 数据库系统的增强安全性 第7章:数据库系统的增强安全性.
課程名稱:資料庫系統 授課老師:李春雄 博士
課程名稱:資料庫系統 授課老師:李春雄 博士
第4章 關聯式資料庫模型 4-1 關聯式資料庫模型的基礎 4-2 關聯式資料庫模型的資料結構 4-3 關聯式資料庫模型的完整性限制條件
第三章:包   包(package)是一个可以将相关对象存储在一起的PL/SQL结构。包包含了两个分离的部件------包说明(specification)和包主体(body)。每个部件都单独被存储在数据字典中。包只能存储在数据库中,不能是本地的。除了可以将相关对象作为一组存在一起以外,包也是十分有用的,因为它们在依赖性方面的限制是比较小的。也有许多性能上的优点。
国家“十一五”规划教材 数据库原理与应用教程(第3版).
SQL SERVER 一些经典语句 1.
第四讲 数据库对象(视图、序列、同义词、索引)
ORACLE 第九讲 触发器.
第一章 数 据 库 概 述 第一节 引言 第二节 数据库基本概念 第三节 数据库系统结构 第四节 数据模型 第五节 数据库管理系统
中国农业科学院博士后学术论坛 博士后基金申请的经验及体会 中国农业科学院生物技术研究所 秦 华 博士
-教育訓練教材- 大專程度義務役預備軍官預備士官 報名及管理系統 風然企業有限公司製作
1.4数据库管理系统 数据库管理系统是数据库系统的核心,是为数据库的建立,维护,使用而建立的系统软件,建立在操作系统基础之上,位于操作系统与用户之间的数据管理软件,负责对数据库进行统一管理与控制.
网上业务经办流程概述 1.系统登录.
看圆如何七十二变 微建筑早课.
本节内容 1.数据结构的起源 2.数据结构的作用和意义 3.基本概念和术语 4.逻辑结构与物理结构 5.抽象数据类型 6.作业
第七章 結構化企業流程塑模個案.
第5章 新增課程與課程管理.
Presentation transcript:

数据库完整性 第 10 章 完整性约束条件 完整性控制 Oracle 的完整性

什么是数据库的完整性  数据的正确性和相容性  防止不合语义的数据进入数据库 例 : 学生的年龄必须是整数,取值范围为 ; 学生的性别只能是男或女; 学生的学号一定是唯一的; 学生所在的系必须是学校开设的系。  完整性:是否真实地反映现实世界

安整性控制机制 1. 完整性约束条件定义机制 2. 完整性检查机制 3. 违约反应 完整性约束条件:加在数据库数据之上的语义约束条件 检查用户发出的操作请求是否违背了完整性约束条件 如果发现用户的操作请求使数据违背了完整性约束条件, 则采取一定的动作来保证数据的完整性。

10.1 计算机安全性概论 完整性约束条件作用的对象  列:对属性的取值类型、范围、精度等的约束条件  元组:对元组中各个属性列间的联系的约束  关系:对若干元组间、关系集合上及关系之间的联系的约束

静态 对静态对象的约束是反映数据库状态合理性的约束 动态 对动态对象的约束是反映数据库状态变迁的约束 六类完整性约束条件 六类完整性约束条件  静态列级约束  静态元组约束  静态关系约束  动态列级约束  动态元组约束  动态关系约束

对象状态 对象状态 动态列级约束 动态元组约束 动态关系约束 动态列级约束 动态元组约束 动态关系约束 动态 ④ ⑤ ⑥ 动态 ④ ⑤ ⑥ 静态列级约束 静态元组约束 静态关系约束 静态列级约束 静态元组约束 静态关系约束 静态 ① ② ③ 静态 ① ② ③ 对象粒度 对象粒度 列 元组 关系 列 元组 关系

1. 静态列级约束 静态列级约束:对列的取值域的说明 最常见、最简单、最容易实现的一类完整性约束 五类静态列级约束 1) 数据类型约束:数据的类型、长度、单位、精度等 例:学生姓名的数据类型为字符型,长度为 8 3) 取值范围或取值集合的约束 例:规定成绩的取值范围为 0-100; 年龄的取值范围为 性别的取值集合为 [ 男, 女 ] 2) 对数据格式的约束 例:学号:前两位表示入学年份,后四位为顺序编号 日期: YY.MM.DD 。 4) 对空值的约束 ( 空值:未定义或未知的值, 与零值和空格不同 ) 有的列允许空值,有的则不允许,如成绩可为空值 5) 其他约束 例:关于列的排序说明等

2. 静态元组约束 规定元组的各个列之间的约束关系 例:订货关系中发货量 <= 订货量 教师关系中教授的工资 >=700 元 静态元组约束只局限在元组上

3. 静态关系约束 关系的各个元组之间或若干关系之间存在的各种联系或约束 关系字段间存在的函数依赖 例:在学生-课程-教师关系 SJT(S,J,T) 的函数依赖: ( (S,J ) →T, T→J ) 主码: (S, J) 定义某个字段值与一个关系多个元组的统计值之间的约束关系 例:职工平均工资的 2 倍 <= 部门经理的工资 <= 职工平均工资的 5 倍 职工平均工资值 : 统计值 常见静态关系约束: 1) 实体完整性约束 2) 参照完整性约束 3) 函数依赖约束 4) 统计约束

4. 动态列级约束 动态列级约束是修改列定义或列值时应满足的约束条件 1) 修改列定义时的约束 例:将原来允许空值的列改为不允许空值时 : 如果该列目前已存在空值,则拒绝这种修改。 2) 修改列值时的约束 修改列值时新旧值之间要满足的约束条件 例:职工工资调整 >= 原来工资 年龄只能增长

5. 动态元组约束 修改元组值 : 各个属性之间要满足的约束条件 6. 动态关系约束 关系变化前后状态:限制条件 例 : 职工工资调整不得低于其原来工资 + 工龄 ×1.5 例:事务一致性、原子性等约束条件

粒度状 态 列 级 元 组 级 关 系 级 静 态 列定义 · 类型 · 格式 · 值域 · 空值 元组值应满足 的条件 实体完整性约束 参照完整性约束 函数依赖约束 统计约束 动 态 改变列定 义或列值 元组新旧值之 间应满足的约 束条件 关系新旧状态间应 满足的约束条件

10.2 完整性控制 DBMS 的完整性控制机制 关系系统三类完整性的实现 参照完整性的实现

DBMS 的完整性控制机制 1. 定义功能 允许用户定义各类完整性约束条件 2. 检查功能  立即执行的约束 (Immediate constraints) 语句执行完后立即检查是否违背完整性约束  延迟执行的约束 (Deferred constraints) 完整性检查延迟到整个事务执行结束后进行 例:银行数据库中 “ 借贷总金额应平衡 ” 的约束 应该是延迟执行的约束 从账号 A 转一笔钱到账号 B 为一个事务,从账号 A 转出去钱后账就不平了, 必须等转入账号 B 后账才能重新平衡,这时才能进行完整性检查。 3. 违约反应  拒绝该操作  其他处理方法

DBMS 的完整性控制机制 完整性规则五元组表示 : (D , O , A , C , P) D ( Data ) 约束作用的数据对象; O ( Operation ) 触发完整性检查的数据库操作 当用户发出什么操作请求时需要检查该完整性规则是立即检查 还是延迟检查; A ( Assertion ) 数据对象必须满足的断言或语义约束,这是规 则的主体; C ( Condition ) 选择 A 作用的数据对象值的谓词; P ( Procedure ) 违反完整性规则时触发的过程。

例 1 :在 “ 学号不能为空 ” 的约束中 D 约束作用的对象为 Sno 属性 O 插入或修改 Student 元组时 A Sno 不能为空 C 无( A 可作用于所有记录的 Sno 属性) P 拒绝执行该操作

例 2 :在 “ 教授工资不得低于 1000 元 ” 的约束中 D 约束作用的对象为工资 Sal 属性 O 插入或修改职工元组时 A Sal 不能小于 1000 C 职称 =′ 教授 ′ (A 仅作用于职称 =‘ 教授 ’ 的记录 ) P 拒绝执行该操作

关系系统三类完整性的实现 关系数据库系统都提供了定义和检查实体完整性、参 照完整性和用户定义的完整性的功能 违反实体完整性规则和用户定义的完整性规则的操作: 一般是拒绝执行 违反参照完整性的操作:  拒绝执行  接受这个操作,同时执行一些附加的操作,以保 证数据库的状态正确

参照完整性的实现 例 : 职工-部门数据库包含职工表 EMP 和部门表 DEPT 1 DEPT 关系的主码为部门号 Deptno 2 EMP 关系的主码为职工号 Empno, 外码为部门号 Deptno 称 DEPT 为被参照关系或目标关系, EMP 为参照关系 RDBMS 实现参照完整性时需要考虑以下 4 方面: 外码是否可以接受空值的问题 在参照关系中插入元组时的问题 在被参照关系中删除元组时的问题 修改被参照关系中主码的问题

外码是否可以接受空值的问题 外码是否能够取空值:依赖于应用环境的语义 实现参照完整性: 系统提供定义外码的机制 定义外码列是否允许空值的机制 例 1 :在职工-部门数据库中, EMP 关系包含有外码 Deptno EMP 关系包含有外码 Deptno 某元组的这一列若为空值,表示这个职工尚未分配到任何具体的部门工 作,和应用环境的语义是相符。 某元组的这一列若为空值,表示这个职工尚未分配到任何具体的部门工 作,和应用环境的语义是相符。 例 2 :学生-选课数据库 Student 关系为被参照关系,其主码为 Sno 。 SC 为参照关系,外码为 Sno 。 若 SC 的 Sno 为空值:表明尚不存在的某个学生,或者某个不知学号的学 生,选修了某门课程,其成绩记录在 Grade 中,与学校的应用环境是不相符 的,因此 SC 的 Sno 列不能取空值。

在被参照关系中删除元组时的问题 删除被参照关系的某个元组( student ),而参照关系有若干元 组 (SC) 的外码值与被删除的被参照关系的主码值相同。 违约反应:可有三种策略(正确与否依应用环境的语义来定)  级联删除( CASCADES ) 将参照关系中外码值与被参照关系中要删除元组主码值相对应的元组一 起删除 将参照关系中外码值与被参照关系中要删除元组主码值相对应的元组一 起删除  受限删除( RESTRICTED ) 当参照关系中没有任何元组的外码值与要删除的被参照关系的元组的主 码值相对应时,系统才执行删除操作,否则拒绝此删除操作。 当参照关系中没有任何元组的外码值与要删除的被参照关系的元组的主 码值相对应时,系统才执行删除操作,否则拒绝此删除操作。  置空值删除( NULLIFIES ) 删除被参照关系的元组,并将参照关系中与被参照关系中被删除元组主 码值相等的外码值置为空值。 删除被参照关系的元组,并将参照关系中与被参照关系中被删除元组主 码值相等的外码值置为空值。

例:要删除 Student 关系中 Sno= 的元组, 而 SC 关系中有 4 个元组的 Sno 都等于 。  级联删除:将 SC 关系中所有 4 个 Sno= 的元组一起 删除。如果参照关系同时又是另一个关系的被参照关系, 则这种删除操作会继续级联下去。  受限删除:系统将拒绝执行此删除操作。  置空值删除:将 SC 关系中所有 Sno= 的元组的 Sno 值置为空值。  在学生选课数据库中,显然第一种方法和第二种方法都 是对的。第三种方法不符合应用环境语义。

在参照关系中插入元组时的问题 出现违约操作的情形  需在参照关系中插入元组,而被参照关系不存在相应的元组 违约反应  受限插入 仅当被参照关系中存在相应的元组,其主码值与参照关系插入元组 的外码值相同时,系统才执行插入操作,否则拒绝此操作。 仅当被参照关系中存在相应的元组,其主码值与参照关系插入元组 的外码值相同时,系统才执行插入操作,否则拒绝此操作。  递归插入 首先向被参照关系中插入相应的元组,其主码值等于参照关系插入元组 的外码值,然后向参照关系插入元组。 首先向被参照关系中插入相应的元组,其主码值等于参照关系插入元组 的外码值,然后向参照关系插入元组。

例:向 SC 关系插入( , 1 , 90 )元组,而 Student 关系中尚没有 Sno=99001 的学生。  受限插入:系统将拒绝向 SC 关系插入( , 1 , 90 )元组。  递归插入:系统将首先向 Student 关系插入 Sno=99001 的元组,然后向 SC 关系插入( , 1 , 90 )元组。

修改被参照关系中主码的问题 两种策略  不允许修改主码  允许修改主码 违约操作  要修改被参照关系中某些元组的主码值,而参照关系中有些元 组的外码值正好等于被参照关系要修改的主码值  要修改参照关系中某些元组的主码值,而被参照关系中没有任 何元组的外码值等于被参照关系修改后的主码值 修改的关系是被参照关系:与删除类似 修改被参照关系中主码值同时,用相同的方法修改 参照关系中相应的外码值。  级联修改 : 修改被参照关系中主码值同时,用相同的方法修改 参照关系中相应的外码值。 拒绝此修改操作。只当参照关系中没有任何元组的 外码值等于被参照关系中某个元组的主码值时,这个元组的主 码值才能被修改。  受限修改 : 拒绝此修改操作。只当参照关系中没有任何元组的 外码值等于被参照关系中某个元组的主码值时,这个元组的主 码值才能被修改。 修改被参照关系中主码值,同时将参照关系中相 应的外码值置为空值。  置空值修 : 改修改被参照关系中主码值,同时将参照关系中相 应的外码值置为空值。

例:将 Student 关系中 Sno= 的元组中 Sno 值改为 。 而 SC 关系中有 4 个元组的 Sno=  级联修改:将 SC 关系中 4 个 Sno= 元组中的 Sno 值也改 为 。如果参照关系同时又是另一个关系的被参照关系, 则这种修改操作会继续级联下去。  受限修改:只有 SC 中没有任何元组的 Sno= 时,才能 修改 Student 表中 Sno= 的元组的 Sno 值改为 。  置空值修改:将 Student 表中 Sno= 的元组的 Sno 值改 为 。而将 S 表中所有 Sno= 的元组的 Sno 值置 为空值。

RDBMS 在实现参照完整性时 : 需要向用户提供定义主码、外码的机制 向用户提供按照自己的应用要求,选择处理 依赖关系中对应的元组的方法。

10.3 Oracle 的完整性 Oracle 中的实体完整性  建表时指定关系的主码列 Oracle 中的参照完整性  定义外码列 Oracle 中用户定义的完整性  列非空  列值唯一  检查列值是否满足一个布尔表达式  触发器

数据库完整性 小结 完整性机制的实施会极大地影响系统性能 不同的数据库产品对完整性的支持策略和支持程度是不同的  许多数据库管理系统对完整性机制的支持比对安全性的 支持要晚得多也弱得多。  数据库厂商对完整性的支持越来越好,不仅在能保证实 体完整性和参照完整性而且能在 DBMS 核心定义、检查和 保证用户定义的完整性约束条件。