数据库完整性
10数据库完整性约束数据库原理

4) 对空值的约束(空值:未定义或未知的值,与零值和空格不同) 有的列允许空值,有的则不允许,如成绩可为空值
5) 其他约束 例:关于列的排序说明,组合列等
2. 静态元组约束
规定元组的各个列之间的约束关系 例:订货关系中发货量<=订货量 教师关系中教授的工资>=700元
例2:在“教授工资不得低于1000元”的约束中 D 约束作用的对象为工资Sal属性 O 插入或修改职工元组时 A Sal不能小于1000 C 职称=′教授′ (A仅作用于职称=‘教授’的记录) P 拒绝执行该操作
关系系统三类完整性的实现
关系数据库系统都提供了定义和检查实体完整性、参 照完整性和用户定义的完整性的功能
2. 完整性检查机制
检查用户发出的操作请求是否违背了完整性约束条件
3. 违约反应
如果发现用户的操作请求使数据违背了完整性约束条件, 则采取一定的动作来保证数据的完整性。
10.1 计算机安全性概论
完整性约束条件作用的对象
列:对属性的取值类型、范围、精度等的约束条件 元组:对元组中各个属性列间的联系的约束 关系:对若干元组间、关系集合上及关系之间的联系的约束
受限删除(RESTRICTED)
当参照关系中没有任何元组的外码值与要删除的被参照关系的元组的主 码值相对应时,系统才执行删除操作,否则拒绝此删除操作。
置空值删除(NULLIFIES)
删除被参照关系的元组,并将参照关系中与被参照关系中被删除元组主 码值相等的外码值置为空值。
例:要删除Student关系中Sno=950001的元组, 而SC关系中有4个元组的Sno都等于950001。 级联删除:将SC关系中所有4个Sno=950001的元组一 起删除。如果参照关系同时又是另一个关系的被参照关 系,则这种删除操作会继续级联下去 受限删除:系统将拒绝执行此删除操作。 置空值删除:将SC关系中所有Sno=950001的元组的 Sno值置为空值。 在学生选课数据库中,显然第一种方法和第二种方法都 是对的。第三种方法不符合应用环境语义。
名词解释数据库的完整性

名词解释数据库的完整性数据库的完整性是指数据库中的数据符合事先定义的规则和约束,没有数据的不一致性和错误。
它通常包括实体完整性、域完整性、参照完整性和用户自定义完整性等方面。
一、实体完整性实体完整性是指数据库表中的每一行数据都必须能被识别并与其他表中的数据进行关联。
在关系型数据库中,每个表都必须有一个主键,用于唯一标识其中的每一条记录。
通过定义主键,可以确保每个记录都具有唯一性,避免了数据的重复和混乱。
二、域完整性域完整性是指数据库中每个属性的取值都必须满足其定义的约束条件。
例如,字段的数据类型、长度、格式等都需要满足设定的规则,以保证数据的有效性和一致性。
常见的约束条件包括非空约束、唯一约束、范围约束、正则表达式约束等。
三、参照完整性参照完整性是指数据库中的外键约束能够维护表与表之间的关系,保证数据的一致性和完整性。
外键是指一个表的字段引用另一个表中的主键,用于建立两个表之间的联系。
外键约束可以限制只能插入或更新具有对应主键值的数据,避免了数据的破坏和不一致。
四、用户自定义完整性用户自定义完整性是指用户根据具体业务需求对数据库增加的约束条件,以满足特定的数据要求。
这些约束条件通常是通过触发器、存储过程等方式定义的,可以对数据进行进一步的验证和筛选,确保数据的正确性和有效性。
用户自定义完整性适用于特定的业务场景,能够帮助用户更好地管理和控制数据。
总结起来,数据库的完整性对于数据的有效性和一致性非常重要。
它通过实体完整性、域完整性、参照完整性和用户自定义完整性等方面的规则和约束,确保了数据库中的数据正确、满足要求,并能够与其他数据表之间建立正确的关联。
只有保持数据库的完整性,才能为用户提供可信赖的数据支持,帮助他们做出准确的决策和分析。
第二章数据库的完整性控制数据完整性(DataIntegrity)是指数据的精确

第二章数据库的完整性控制数据完整性(Data Integrity)是指数据的精确性(accuracy)和可靠性(reliability),它是防止数据库中存在不符合语义规定的数据和防止因错误的信息的输入造成无效操作或错误信息而提出的,保证在一个应用程序更新数据的过程中数据的语义正确性。
数据完整性主要分为三类:实体完整性(Entity Integrity),参照完整性(Referential Integrity)以及用户定义的完整性(User-defined Integrity),其中用户定义的完整性主要包括域完整性(Domain Integrity)和其他自定义完整性。
为维护数据库德完整性,数据库管理系统(DBMS)必须提供一种机制来检查数据库中的数据,看其是否满足语义规定的条件。
这些加在数据库数据上的语义约束条件称为数据库完整性规则,它们作为模式的一部分存入数据库中。
完整性控制是指对数据库进行更新操作,要遵守完整性规则,才能保证数据的语义正确性,防止数据库中存在不符合语义的数据。
目的是在合法用户访问数据库的过程中,保证数据的正确性和准确性。
完整性检查机制是指在DBMS中检查数据是否满足完整性条件的机制。
由DBMS在执行更新动作时,检查是否满足预定的完整性约束条件,来进行控制。
广义的完整性控制包括故障恢复、并发控制。
而一般所指的完整性控制是指基于数据库的完整性约束规则,如:实体完整性、引用完整性等。
SQL中两种主要的数据完整性控制机制是指完整性约束规则的定义和检查以及触发器(Trigger)机制。
完整性控制机制应具有三个功能:(1)定义功能,即提供定义完整性约束条件的机制;(2)检查功能,即检查用户发出的操作请求书否违反了约束条件;(3)如果发现用户操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。
完整性控制机制的工作原理基本上分为两类,一种是定义完整性时就立刻进行检查的,例如实体完整性的定义;另外一种是定义完整性之后进行检查的,例如参照完整性的定义。
数据完整性

3.5 数据完整性在数据库中数据完整性是指保证数据正确的特性,一般包括实体完整性、域完整性、参照完整性。
一、实体完整性是保证表中记录唯一的特性。
即在一个表中,不能有重复的纪录。
候选关键字:如果一个字段的值或几个字段的值能够唯一标识表中的一条记录,这样的字段称为侯选关键字。
主关键字:在一个表中可能会有几个具有这种特性的字段或者字段的组合,这时从中选择一个作为主关键字。
在VFP中将主关键字称做主索引,将侯选关键字称为侯选索引。
实现方法:在VFP中利用主关键字(主索引)或候选关键字(候选索引)来保证表中记录的惟一性。
例1. 打开数据库“成绩管理”,为学生表中的“学号”字段建立主索引(升序)。
二、域完整性1.域:列的取值的范围(EG:数学中的定义域)域完整性:列的取值范围合理性我们以前在创建表的时候指定不同的数据类型和宽度来限制字段的取值类型和取值范围,但这些还远远不够。
我们需要进一步对列里能输入什么样的数据严格要求。
2.实现域完整性的方法:设置列的有效性规则,设置列的默认值⑴设置列的有效性规则例2. 设置“成绩管理”数据库中“学生”表中年龄字段的有效性规则:要求学生表中的年龄必须在15-22之间,否则就认为输入无效!并提示“年龄只能在15-22岁之间!”例3. 设置“学生”表中系部字段的有效性规则:要求系部列的取值必须是四个系之一,如果输入其他值就认为输入无效!并提示“该系部名不存在!”例4.设置“成绩”表中成绩的有效性规则为:成绩只能在0-100分之间,如果用户输入错误,则提示“成绩不在范围内!”⑵为列设置默认值例5.对“学籍”表进行修改,设置“入学日期”的默认值为2009-08-26,然后打开表,输入一条新记录,观察现象例6. 对“学生”表进行修改,设置“系部”列的默认值为基础部,然后打开表,使用Append命令输入一条新记录,观察现象三、参照完整性1.思考:⑴如果同学们在填学生表的时候将自己的班级名称写错了, 写成了一个学校中根本不存在的班级, 这样的结果肯定是错误的。
第5章 数据库完整性

第5章数据库安全性(2课时)数据库的数据保护主要包括数据的安全性和数据的完整性。
数据的安全性是为了保护数据库防止恶意的破坏和非法访问,防范对象是非法用户和非法操作。
数据库的完整性是指数据的正确性和相容性,是为了防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据,防范对象是不合语义的、不正确的数据。
举例说明数据的完整性(三种完整性各一例)。
为维护数据库的完整性,DBMS必须具备三个功能:1 提供定义完整性约束条件的机制完整性约束条件也称为完整性约束规则,是数据库必须满足的语义约束条件。
SQL标准使用了一系列概念来描述完整性,包括关系模型的实体完整性、参照完整性和用户定义完整性。
这些完整性一般由SQL的DDL语句来实现。
它们作为数据库模式的一部分存入数据字典中。
2 提供完整性检查的方法DBMS中检查数据是否满足完整性约束条件的机制称为完整性检查。
一般在INSERT、UPDA TE、DELETE语句执行后开始检查,也可以在事务提交时检查。
检查这些操作执行后数据库中的数据库是否违背了完整性约束条件。
3 违约处理DBMS若发现用户的操作违背了完整性约束条件,就采取一定的动作,如拒绝(NOACTION)执行该操作,或级联(CASCADE)执行其他操作,进行违约处理以保证数据的完整性。
目前商用的DBMS产品都支持完整性控制,即完整性定义、检查控制和违约处理都是由DBMS来实现,不必由应用程序来完成,从而减轻了应用程序员的负担。
5.1 实体完整性是关系的两个不变性之一,关系的主属性的取值不能相同,主属性不能取空值,保证在一个关系中不存在两个完全相同的元组。
5.1.1 实体完整性定义关系模型的实体完整性在CREATE TABLE中用PRIMARY KEY定义。
对单属性构成的码有两种说明方法:一种是定义为列级约束条件;一种是定义为表级约束条件。
对多个属性构成的码只有一种说明方法:定义为表级约束条件。
数据库完整性(好)资料重点

❖ 参照完整性的常见实现机制包括:
▪ 外键(Foreign Key)、检查(Check)、触发器(Trigger);存 储过程(Stored Procedure)
❖ 常见的实现机制包括:
▪ 规则(Rule)、创建数据表时的所有约束(Constraint)、触发 器(Trigger)、存储过程(Stored Produre);
二、在SQL Server 2005中实现数据完整性
❖ SQL Server 2005提供了完善的数据完整性机制,主 要包括规则、默认值和约束3类;
第六章 数据库完整性
授课教师:刘跃娟 2013-12-6
数据库完整性
❖ 数据是数据库的核心,数据的正确和完整与否将直接影响数据 库的使用。
❖ 数据的完整性和安全性是两个不同概念;
▪ 数据的安全性
➢ 保护数据库防止恶意的破坏和非法的存取 ➢ 防范对象:非法用户和非法操作
▪ 数据的完整性
➢ 防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正 确的数据
❖ 实体完整性:在现实世界中,任何一个实体都有区别于其他实 体的特征,即在数据库中,所有的记录都应该有惟一的标识, 这就是实体完整性的含义(规则2.1:实体完整性规则)。
❖ 常见的实体完整性机制包括:
▪ 主键(Primary Key);惟一码(Unique);
2)参照完整性
❖ 参照完整性是指在两个表的主键和外键之间数据的完整性,其 含义包括:
➢ 防范对象:不合语义的、不正确的数据
本次课内容
一. 数据完整性概述 二. 在SQL Server 2005中实现数据完整性
数据库的完整性

数据库完整性约束条件 为维护数据库的完整性, 为维护数据库的完整性 , DBMS必须提供 必须提供 一种机制来检查数据库中的数据, 一种机制来检查数据库中的数据,看其是否满 足语义规定的条件。 足语义规定的条件。这些加在数据库数据之上 的语义约束条件称为数据库完整性约束条件。 它们作为模式的一部分存入数据库中。 它们作为模式的一部分存入数据库中。 完整性检查 而DBMS中检查数据是否满足完整性条件 中检查数据是否满足完整性条件 的机制称为完整性检查 。
1.静态列级约束 静态列级约束 是对一个列取值域的说明, 是对一个列取值域的说明,这是最 常用也最容易实现的一类完整性约束。 常用也最容易实现的一类完整性约束。 规定学号的前两位表示入学年份, 如:规定学号的前两位表示入学年份, 中间两位表示系的编号,后三位 为顺序 中间两位表示系的编号, 编号。出生日期的格式为YY MM.DD。 YY. 编号。出生日期的格式为YY.MM.DD。
8.2 完整性控制机制
DBMS的完整性控制机制应具有三方面的功能; DBMS的完整性控制机制应具有三方面的功能; 的完整性控制机制应具有三方面的功能 定义功能: ( 1 ) 定义功能 : 提供定义完整性约束条件 的机制。 的机制。 检查功能: ( 2 ) 检查功能 : 检查用户发出的操作请求 是否违背了完整性约束条件。 是否违背了完整性约束条件。 ( 3 ) 如果发现用户的操作请求使数据违背 了完整性约束条件,则采取一定的操作, 了完整性约束条件,则采取一定的操作,以保 证数据的完整性。 证数据的完整性。
第8章 数据库的完整性
数据库的完整性是指数据的正确性 和相容性。 和相容性。 例如, 学生的学号必须唯一; 例如 , 学生的学号必须唯一 ; 性别只能是 男或女; 男或女;等。 数据库是否具备完整性关系到数据库系 统能否真实地反映现实世界, 统能否真实地反映现实世界 , 因此维护 数据库的完整性是非常重要的。 数据库的完整性是非常重要的。
数据库的完整性

4
7.2.2 完整性约束的类型
2.由数据库应用确定的完整性约束 数据库上的大部分语义完整性约束是由数据库应用确 定的。这类完整性约束分为状态约束和变迁约束两类, 定的。这类完整性约束分为状态约束和变迁约束两类,在 数据库管理系统中这两类约束都被视为显式约束。 数据库管理系统中这两类约束都被视为显式约束。 (1)状态约束。在某一时刻数据库中的所有数据实例 状态约束。 构成了数据库的一个状态。 构成了数据库的一个状态。数据库的状态约束也称静态约 是所有数据库状态必须满足的约束。 束,是所有数据库状态必须满足的约束。每当数据库被修 改时,数据库管理系统都要进行状态约束的检查, 改时,数据库管理系统都要进行状态约束的检查,以保证 状态约束始终被满足。 状态约束始终被满足。
8
第7章 数据库的安全保护
7.2.3 完整性约束的定义方法
使用过程化定义方法, 使用过程化定义方法,完整性约束的验证程序可以由 通用程序设计语言编制。 通用程序设计语言编制。这种方法既为程序员编制高效率 的完整性验证程序提供了有利条件, 的完整性验证程序提供了有利条件,同时也给程序员带来 了很大负担。 了很大负担。程序员必须清楚他所编码的事务所涉及的所 有完整性约束,并为每一个约束编制一个验证过程, 有完整性约束,并为每一个约束编制一个验证过程,程序 员的任何误解、疏忽和遗漏都将导致数据库的不正确。 员的任何误解、疏忽和遗漏都将导致数据库的不正确。目 过程化定义方法已经被许多数据库管理系统广泛采用。 前,过程化定义方法已经被许多数据库管理系统广泛采用。 数据库的完整性约束经常是随实际应用的变化而变 化的。显式约束的过程化定义方法有一个严重缺点: 化的。显式约束的过程化定义方法有一个严重缺点:一旦 完整性约束发生变化, 完整性约束发生变化,相应事务的完整性验证程序就必须 被修改。 被修改。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
完整性约束条件
⑤ 动态元组约束 – 动态元组约束是指修改某个元组的值时需要参照其 旧值,并且新旧值之间需要满足某种约束条件。 例: 职工工资调整不得低于其原来工资+工龄*1.5
完整性约束条件
⑥ 动态关系约束 – 动态关系约束是加在关系变化前后状态上的限制条件 例:事务一致性、原子性等约束条件
完整性约束条件
完整性约束条件作用的对象
对象的状态 – 静态 对静态对象的约束是反映数据库状态合理性的约束 这是最重要的一类完整性约束 – 动态 对动态对象的约束是反映数据库状态变迁的约束
完整性约束条件分类
值的约束 – 指对数据取值类型、范围、精度等的规定, 例如对 属性规定某个值集, 规定属性取值类型、格式(职工 号第一位为字母, 后面是四位数字) 结构约束 – 指对数据之间联系的限制, 以关系库为例:同一关系 的不同属性之间可能满足一定的约束条件(A1θA2); 不同关系之间的属性取值也可能要满足一定的约束 条件(外键取值)
– 数据库是否具备完整性关系到数据库系统能否 真实地反映现实世界,因此维护数据库的完整 性是非常重要的。
完整性控制机制
完整性约束条件定义机制 – 完整性约束条件: 根据实际应用需求, 数据库中的数据 应满足一些规定的条件。是数据模型的一个重要组成 部分,它约束了数据库中数据的语义 – DBMS应提供手段让用户根据现实世界的语义定义数据 库的完整性约束条件,并把它们作为模式的一部分存 入数据库中 完整性检查机制 – DBMS检查用户发出的操作请求是否违背了完整性约束 条件 违约反应 – 如果发现用户的操作请求使数据违背了完整性约束条 件,则采取一定的动作来保证数据的完整性
DBMS的完整性控制机制
例1:在“学号不能为空”的约束中 D 约束作用的对象为Sno属性 O 插入或修改Student 元组时 A Sno不能为空 C 无(A可作用于所有记录的Sno属性) P 拒绝执行该操作
DBMS的完整性控制机制
例2:在“教授工资不得低于6000元”的约束中 D 约束作用的对象为工资Sal属性 O 插入或修改职工元组时 A Sal不能小于6000 C 职称=‘教授’ (A仅作用于职称=‘教授’的记录) P 拒绝执行该操作
RDBMS实现参照完整性时需要考虑 的4个方面
例:要删除Student关系中Sno=950001的元组, 而SC关系中有4个元组的Sno都等于950001。 – 级联删除:将SC关系中所有4个Sno=950001的元 组一起删除。如果参照关系同时又是另一个关系的 被参照关系,则这种删除操作会继续级联下去。 – 受限删除:系统将拒绝执行此删除操作 – 置空值删除:将SC关系中所有Sno=950001的元组 的Sno值置为空值 (不符合应用语义)
DBMS的完整性控制机制
检查功能
– 立即执行的约束(Immediate constraints) 检查是否违背完整性约束的时机通常是在 一条语句或事务执行完后立即检查 – 延迟执行的约束(Deferred constraints) 在某些情况下,完整性检查需要延迟到整 个事务执行结束后再进行
完整性约束条件
DBMS的完整性控制机制
例2:银行数据库中“借贷总金额应平衡”的约束就应该是 延迟执行的约束 – 从账号A转一笔钱到账号B为一个事务,从账号A转 出去钱后账就不平了,必须等转入账号B后账才能 重新平衡,这时才能进行完整性检查。
DBMS的完整性控制机制
违约反应 – 拒绝该操作
– 其他处理方法
DBMS的完整性控制机制
RDBMS实现参照完整性时需要考虑 的4个方面
(3) 修改被参照关系中主码的问题 – 1)不允许修改主码策略 – 2)允许修改主码策略 违约操作 ♦要修改被参照关系中某些元组的主码值,而 参照关系中有些元组的外码值正好等于被参 照关系要修改的主码值 ♦要修改参照关系中某些元组的主码值,而被 参照关系中没有任何元组的外码值等于被参 照关系修改后的主码值
RDBMS实现参照完整性时需要考虑 的4个方面
– 级联删除 将参照关系中所有外码值与被参照关系中要删除 元组主码值相对应的元组一起删除。 – 受限删除 只有当参照关系中没有任何元组的外码值与要删 除的被参照关系的元组的主码值相对应时,系统 才执行删除操作,否则拒绝此删除操作。 – 置空值删除 删除被参照关系的元组,并将参照关系中所有与 被参照关系中被删除元组主码值相等的外码值置 为空值
关系系统三类完整性的实现
目前许多关系数据库系统都提供了定义和检查实体完 整性、参照完整性和用户定义的完整性的功能。 对于违反实体完整性规则和用户定义的完整性规则的 操作一般都是采用拒绝执行的方式进行处理。 而对于违反参照完整性的操作,并不都是简单地拒绝 执行,有时还需要采取另一种方法,即接受这个操 作,同时执行一些附加的操作,以保证数据库的状态 仍然是正确的。
(1) 外码是否可以接受空值的问题 – 外码是否能够取空值是依赖于应用环境的语义的 – 在实现参照完整性时,系统除了应该提供定义外码 的机制,还应提供定义外码列是否允许空值的机制 例1:在职工-部门数据库中,EMP关系包含有外码 Deptno,某一元组的这一列若为空值,表示这个职工 尚未分配到任何具体的部门工作。这和应用环境的语 义是相符的,因此EMP的Deptno列应允许空值。
RDBMS实现参照完整性时需要考虑 的4个方面
(2) 删除被参照关系的元组时的问题 – 出现违约操作的情形 需要删除被参照关系的某个元组,而参照关系有 若干元组的外码值与被删除的被参照关系的主码 值相对应 – 违约反应:可有三种策略 级联删除(CASCADES) 受限删除(RESTRICTED) 置空值删除(NULLIFIES) 三种处理方法,哪一种是正确的,要依应用环境的语 义来定。
例1: begin transaction update Students set Sno=‘95012’ where Sno=‘95001’; update SC set Sno=‘95012’ where Sno=‘95001’; commit 如是立即执行约束, 事务不能成功执行 如是延迟执行约束, 事务可以成功执行
完整性约束条件
3) 对取值范围或取值集合的约束 例:规定成绩的取值范围为0-100,年龄的取值范 围为14-29,性别的取值集合为[男,女]。 4) 对空值的约束 空值表示未定义或未知的值,它与零值和空格不 同。有的列允许空值,有的则不允许。例如规定成 绩可以为空值。 5) 其他约束 例:关于列的排序说明,组合列等。
参照完整性的实现
例:职工-部门数据库包含职工表EMP和部门表DEPT
– –
DEPT关系的主码为部门号Deptno EMP关系的主码为职工号Empno, 外码为部门号 Deptno 该Deptno与DEPT关系中Deptno相对应 称DEPT为被参照关系或目标关系,EMP为参照关系
Hale Waihona Puke – –RDBMS实现参照完整性时需要考虑 的4个方面
列
元组
关系
对象粒度
完整性约束条件
① 静态列级约束 – 静态列级约束是对一个列的取值域的说明,这是最 常见最简单同时也最容易实现的一类完整性约束
完整性约束条件
– 五类静态列级约束 1) 对数据类型的约束,包括数据的类型、长度、单位、 精度等 例:规定学生姓名的数据类型应为字符型,长度为8 2) 对数据格式的约束 例:规定学号的格式为前两位表示入学年份,后四位 为顺序编号。出生日期的格式为YY.MM.DD
完整性约束条件分类
静态约束 – 指数据库每一确定状态的数据应满足的约束条件, 例如外键约束等 动态约束 – 指DB从一种状态转变为另外一种状态时, 新值和旧 值之间应满足的约束条件, 例如工资调整时, 要求新 工资不低于旧工资)
完整性约束条件
对象状态 动态 动态列级约束 ④ 静态列级约束 静态 ① 动态元组约束 ⑤ 静态元组约束 ② 动态关系约束 ⑥ 静态关系约束 ③
完整性约束条件小结
粒 度 状态
列 级 列定义 ·类型 ·格式 ·值域 ·空值 改变列定 义或列值
元组级 元组值应满足 的条件
关系级 实体完整性约束 参照完整性约束 函数依赖约束 统计约束 关系新旧状态间应 满足的约束条件
静 态
动 态
元组新旧值之 间应满足的约 束条件
提纲
什么是数据库的完整性 完整性约束条件 完整性控制 Oracle的完整性
完整性规则的形式化表述 一条完整性规则可以用一个五元组表示: (D,O,A,C,P) – D(Data) 约束作用的数据对象; – O(Operation) 触发完整性检查的数据库操作,即 当用户发出什么操作请求时需要检查该完整性规则, 是立即检查还是延迟检查; – A(Assertion) 数据对象必须满足的断言或语义约 束,这是规则的主体; – C(Condition) 选择A作用的数据对象值的谓词; – P(Procedure) 违反完整性规则时触发的过程。
完整性约束条件
② 静态元组约束 – 静态元组约束就是规定组成一个元组的各个列之间 的约束关系。 例如: – 订货关系中包含发货量、订货量等列,发货量不得 超过订货量 – 教师关系中包含职称、工资等列,教授的工资不得 低于指定的值 – 静态元组约束只局限在单个元组上
完整性约束条件
③ 静态关系约束 – 在一个关系的各个元组之间或者若干关系之间常常 存在各种联系或约束 – 常见静态关系约束 1) 实体完整性约束 2) 参照完整性约束 3) 函数依赖约束 – 见11章 4) 统计约束
完整性约束条件
– 统计约束 定义某个字段值与一个关系多个元组的统计值之 间的约束关系 例:规定部门经理的工资不得高于本部门职工平均 工资的5倍,不得低于本部门职工平均工资的2 倍。本部门职工的平均工资值是一个统计计算值
完整性约束条件
④ 动态列级约束 – 动态列级约束是修改列定义或列值时应满足的约束条件 – 常见动态列级约束 1) 修改列定义时的约束 例:规定将原来允许空值的列改为不允许空值时, 如果该列目前已存在空值,则拒绝这种修改。 2) 修改列值时的约束 修改列值有时需要参照其旧值,并且新旧值之间需 要满足某种约束条件。 例:职工工资调整不得低于其原来工资,学生年龄 只能增长