华科数据库系统原理第五章——完整性控制PPT教学课件
合集下载
第四章数据库安全性第五章数据库完整性PPT课件
26%
+
72%的 攻击行 为发生 在内部 【 注】本 图摘自 美国 FBI网 络安全 调查报 告
*
8
4.1.1 计算机系统的三类安全性问题
技术安全类 管理安全类 政策法律类
*
9
4.1.2 安全标准简介
为降低进而消除对系统的安全攻击,各国引用或制 定了一系列安全标准 TCSEC (桔皮书) TDI (紫皮书)
*
10
4.1.2安全标准简介
1985年美国国防部(DoD)正式颁布《 DoD可信 计算机系统评估标准》(简称TCSEC或DoD85) TCSEC标准的目的
提供一种标准,使用户可以对其计算机系统内敏感 信息安全操作的可信程度做评估。
给计算机行业的制造商提供一种可循的指导规则, 使其产品能够更好地满足敏感应用的安全需求。
*
26
4.2.3 自主存取控制方法
关系系统中的存取权限
模式 数据
数据对象 模式 外模式 内模式 表 属性列
操作类型 建立、修改、删除、检索 建立、修改、删除、检索 建立、删除、检索 查找、插入、修改、删除 查找、插入、修改、删除
*
27
4.2.3 自主存取控制方法
定义方法 SQL Server 中均可以用鼠标操作完成
*
22
4.2.2 存取控制
常用存取控制方法
自主存取控制(Discretionary Access Control ,简称DAC)
灵活
强制存取控制(Mandatory Access Control, 简称 MAC)
严格
*
23
(一)自主存取控制方法
同一用户对于不同的数据对象有不同的存取权限 不同的用户对同一对象也有不同的权限 用户还可将其拥有的存取权限转授给其他用户
数据库数据库完整性控制PPT课件
第34页/共37页
12.5 数据的锁定
• 防止死锁应遵循以下原则:
(1) 尽量避免并发地执行涉及到修改数据的语句。 (2) 要求每个事务一次就将所有要使用的数据全
部加锁,否则就不予执行。 (3) 预先规定一个封锁顺序,所有的事务都必须
按这个顺序对数据执行封锁。例如,不同的过 程在事务内部对对象的更新执行顺序应尽量保 持一致。 (4) 每个事务的执行时间不可太长,对程序段长
注意定 界符
第15页/共37页
12.2 默认值 (2) 绑定默认对象
修改默 认对象
将右侧绑定列 删除至左侧,
解除绑定
第16页/共37页
将左侧列 添加至右 侧,即绑
定
12.2 默认值 (3) 重命名默认对象
(4) 删除默认对象
第17页/共37页
12.3 规则
• 规则是数据库中对存储在表的列或用户定义数据 类型中的值的规定和限制。
键,即外键是用于建立和加强两个表数据之间的连接的一列或多列,通过它可以强制参照完整性。 • 外键约束的主要目的是控制存储在外键表中的数据。
第6页/共37页
12.1 约束
• 创建外键约束的方法 • 打开企业管理器,展开数据库,右键单击关系图,选择【新建数据库关系图】 菜单项。 • 根据向导提示,选择欲创建外键约束的表。 • 出现如下界面,拖动关联列。
的基础上,添加或删除约束。当表被删除 时,表所带的所有约束定义也随之被删除。
第3页/共37页
12.1 约束
(1) 主键约束(Primary Key,PK)
• 表的一列或几列的组合的值在表中唯一地指定一行 记录,这样的一列或多列称为表的主键,通过它可
强制表的实体完整性。
• 主键不能为空,且不同两行的键值不能相同。 • 表本身并不要求一定要有主键,但最好给表定义主
12.5 数据的锁定
• 防止死锁应遵循以下原则:
(1) 尽量避免并发地执行涉及到修改数据的语句。 (2) 要求每个事务一次就将所有要使用的数据全
部加锁,否则就不予执行。 (3) 预先规定一个封锁顺序,所有的事务都必须
按这个顺序对数据执行封锁。例如,不同的过 程在事务内部对对象的更新执行顺序应尽量保 持一致。 (4) 每个事务的执行时间不可太长,对程序段长
注意定 界符
第15页/共37页
12.2 默认值 (2) 绑定默认对象
修改默 认对象
将右侧绑定列 删除至左侧,
解除绑定
第16页/共37页
将左侧列 添加至右 侧,即绑
定
12.2 默认值 (3) 重命名默认对象
(4) 删除默认对象
第17页/共37页
12.3 规则
• 规则是数据库中对存储在表的列或用户定义数据 类型中的值的规定和限制。
键,即外键是用于建立和加强两个表数据之间的连接的一列或多列,通过它可以强制参照完整性。 • 外键约束的主要目的是控制存储在外键表中的数据。
第6页/共37页
12.1 约束
• 创建外键约束的方法 • 打开企业管理器,展开数据库,右键单击关系图,选择【新建数据库关系图】 菜单项。 • 根据向导提示,选择欲创建外键约束的表。 • 出现如下界面,拖动关联列。
的基础上,添加或删除约束。当表被删除 时,表所带的所有约束定义也随之被删除。
第3页/共37页
12.1 约束
(1) 主键约束(Primary Key,PK)
• 表的一列或几列的组合的值在表中唯一地指定一行 记录,这样的一列或多列称为表的主键,通过它可
强制表的实体完整性。
• 主键不能为空,且不同两行的键值不能相同。 • 表本身并不要求一定要有主键,但最好给表定义主
华科数据库系统原理第五章——完整性控制
③ 置空值修改(nullifies)
· 修改被参照关系中的主码值; · 将参照关系中的与该主码值相等的外码置为空值。 ④ 说明 · 具体应用中,根据应用需求选择上述方法执行。
· DBMS提供机制支持用户选择。
13
3、用户定义完整性(integrity of user definition) 1)空值控制 ——对给定属性施加不允许空值限制(NOT NULL) 2)单个属性控制 为:(CJ is Null) OR (CJ BETWEEN 0 AND 100) 3)多属性控制 如:XB=‘男’ AND YL<=30
24
FOR EACH ROW (FOR EACH STATEMENT) 删除触发器 DROP TRIGGER 触发器名 ON 表名
25
关于触发器的概念
1.触发器名 2.表名 3.触发事件 INSERT/DELETE/UPDATE(OF<触发列,…>)… 4.触发时机 BEFORE,AFTER 5.触发器类型 FOR EACH ROW,FOR EACH STATEMENT 6.触发条件 WHEN 7.触发动作体 AS BEGIN…END
· 参照关系中与被参照关系中码值对应元组删除 · 可能层层牵连 若SC又是另一参照关系的被参照关系,则可能又删除 之……。
10
② 受限删除(restricted) ——参照关系没有一个外码与要删除的被参照关系的主码值相对 应时才执行删除。 例如:若SC中外码值XH,无一个与主码值(Student.XH, course.KH)对应时才删去student、course中相应元组。
触发器的作用? 维护数据完整性
维护系统安全性
26
20
② 说明: · SC中外码为XH,KH。 · 对应student主码为XH。 · 对应course主码为KH。 · 当修改student中XH时,先检查SC中有无元组XH值与之相等, 若有,则不能执行该修改;当修改course中KH,先检查SC中有 无元组的KH值与之相等,若有,则不能执行该修改。 · 当删除student或course某元组时,则先在SC中找到相应元组, 进行捆绑删除。
数据库课件5db数据库完整性
参照完整性
参照完整性检查和违约处理
参照表
插入元组 修改外码值 可能破坏参照 完整性 可能破坏参照 完整性
被参照表
可能破坏参照完整性 可能破坏参照完整性 删除元组 修改主码值
违约处理
拒绝 拒绝 拒绝/级连删除/ 设置为空值 拒绝/级连删除/ 设置为空值
参照完整性
违约处理
拒绝执行:默认策略 级连操作:删除或修改参照表中的所有造成不一致的元 组。 设置空值:将参照表中的所有造成不一致的元组的对应 属性设置为空值。(MYSQL 支持,SQL SERVER不支持)
第五章 数据库完整性
第5章 数据库完整性
数据库的完整性是指数据的正确性和相容性。 为维护数据库的完整性,DBMS必须提供一种机 制来检查数据库中的数据,看其是否满足语义 规定的条件。这些加在数据库数据之上的语义 约束条件称为数据库完整性约束条件,它们作 为模式的一部分存入数据库中。 DBMS中检查数据是否满足完整性条件的机制称 为完整性检查。
Deleted逻辑表
在学生表中建立删除触发器tr_deleteS,该触 发器在删除学生表中的记录时触发,将从与 选课表中相应学生记录删除。 create trigger tr_deleteS on student after delete as delete from sc where sno in (select sno from deleted)
参照完整性
例:显式说明参照完整性的违约处理
CREATE TABLE sc (sno char(10) NOT NULL, cno char(4) NOT NULL , grade SMALLINT, PRIMARY KEY(sno,cno), FOREIGN KEY(sno) REFERENCES Student(Sno) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY(cno) REFERENCES Course(Cno) ON DELETE NO ACTION ON UPDATE CASCADE )
数据库系统原理数据库完整性课件
❖ 对多个属性构成的码只有一种说明方法 ▪ 定义为表级约束条件
5.1.2 实体完整性检查和违约处理
❖ 插入或对主码列进行更新操作时,RDBMS按照实 体完整性规则自动进行检查。包括: ▪ 1. 检查主码值是否唯一,如果不唯一则拒绝插 入或修改 ▪ 2. 检查主码的各个属性是否为空,只要有一个 为空就拒绝插入或修改
第五章 数据库完整性
5.1 实体完整性 5.2 参照完整性 5.3 用户定义的完整性 5.4 完整性约束命名子句 *5.5 域中的完整性限制 5.6 触发器 5.7 小结
5.1.1 实体完整性定义
❖ 关系模型的实体完整性 ▪ CREATE TABLE中用PRIMARY KEY定义
❖ 单属性构成的码有两种说明方法 ▪ 定义为列级约束条件 ▪ 定义为表级约束条件
[例9] 当学生的性别是男时,其名字不能以Ms.打头。
CREATE TABLE Student (Sno CHAR(9), Sname CHAR(8) NOT NULL, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20), PRIMARY KEY (Sno), CHECK (Ssex='女' OR Sname NOT LIKE 'Ms.%') /*定义了元组中Sname和 Ssex两个属性值之间的约束条件*/ );
CREATE TABLE Student (Sno NUMERIC(6) CONSTRAINT C1 CHECK (Sno BETWEEN 90000 AND
99999), Sname CHAR(20) CONSTRAINT C2 NOT NULL, Sage NUMERIC(3) CONSTRAINT C3 CHECK (Sage < 30), Ssex CHAR(2) CONSTRAINT C4 CHECK (Ssex IN ( '男','女')), CONSTRAINT StudentKey 5.1 实体完整性 5.2 参照完整性 5.3 用户定义的完整性 5.4 完整性约束命名字句 *5.5 域中的完整性限制 5.6 触发器 5.7 小结
5.1.2 实体完整性检查和违约处理
❖ 插入或对主码列进行更新操作时,RDBMS按照实 体完整性规则自动进行检查。包括: ▪ 1. 检查主码值是否唯一,如果不唯一则拒绝插 入或修改 ▪ 2. 检查主码的各个属性是否为空,只要有一个 为空就拒绝插入或修改
第五章 数据库完整性
5.1 实体完整性 5.2 参照完整性 5.3 用户定义的完整性 5.4 完整性约束命名子句 *5.5 域中的完整性限制 5.6 触发器 5.7 小结
5.1.1 实体完整性定义
❖ 关系模型的实体完整性 ▪ CREATE TABLE中用PRIMARY KEY定义
❖ 单属性构成的码有两种说明方法 ▪ 定义为列级约束条件 ▪ 定义为表级约束条件
[例9] 当学生的性别是男时,其名字不能以Ms.打头。
CREATE TABLE Student (Sno CHAR(9), Sname CHAR(8) NOT NULL, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20), PRIMARY KEY (Sno), CHECK (Ssex='女' OR Sname NOT LIKE 'Ms.%') /*定义了元组中Sname和 Ssex两个属性值之间的约束条件*/ );
CREATE TABLE Student (Sno NUMERIC(6) CONSTRAINT C1 CHECK (Sno BETWEEN 90000 AND
99999), Sname CHAR(20) CONSTRAINT C2 NOT NULL, Sage NUMERIC(3) CONSTRAINT C3 CHECK (Sage < 30), Ssex CHAR(2) CONSTRAINT C4 CHECK (Ssex IN ( '男','女')), CONSTRAINT StudentKey 5.1 实体完整性 5.2 参照完整性 5.3 用户定义的完整性 5.4 完整性约束命名字句 *5.5 域中的完整性限制 5.6 触发器 5.7 小结
数据库系统概论之数据库完整性(ppt 38页)
如果想让系统采用其他策略则必须在创建表的时 候显式地加以说明。
10.01.2020
39
[例题4] 显式说明参照完整性的违约处理
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), /*在表级定
关系的各个元组之间或若干关系之间存在的各种联系或约束
常见静态关系约束:
1) 实体完整性约束 2) 参照完整性约束 3) 函数依赖约束 4) 统计约束
10.01.2020
14
统计约束
• 定义某个字段值一个关系多个元组的统计值之间的约束关系 • 例:职工平均工资的2倍<=部门经理的工资<=职工平均工资的5倍
数据库系统概论
An Introduction to Database System
第五章 数据库完整性
中国地质大学信息工程学院
10.01.2020
1
什么是数据库的完整性
• 数据的正确性和相容性 • 防止不合语义的数据进入数据库。 • 关注 是否真实地反映现实世界
例: 学生的年龄必须是整数,取值范围为14--29; 学生的性别只能是男或女; 学生的学号一定是唯一的; 学生所在的系必须是学校开设的系;
10.01.2020
33
5.2.1 参照完整性定义
[例题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),/*在表级定义
10.01.2020
39
[例题4] 显式说明参照完整性的违约处理
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), /*在表级定
关系的各个元组之间或若干关系之间存在的各种联系或约束
常见静态关系约束:
1) 实体完整性约束 2) 参照完整性约束 3) 函数依赖约束 4) 统计约束
10.01.2020
14
统计约束
• 定义某个字段值一个关系多个元组的统计值之间的约束关系 • 例:职工平均工资的2倍<=部门经理的工资<=职工平均工资的5倍
数据库系统概论
An Introduction to Database System
第五章 数据库完整性
中国地质大学信息工程学院
10.01.2020
1
什么是数据库的完整性
• 数据的正确性和相容性 • 防止不合语义的数据进入数据库。 • 关注 是否真实地反映现实世界
例: 学生的年龄必须是整数,取值范围为14--29; 学生的性别只能是男或女; 学生的学号一定是唯一的; 学生所在的系必须是学校开设的系;
10.01.2020
33
5.2.1 参照完整性定义
[例题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),/*在表级定义
数据库的完整性课件
06
案例分析与实践
案例一:电商数据库完整性设计
需求分析
实体关系设计
针对电商业务特点,分析数据完整性需求, 如商品信息、订单信息、用户信息等数据 的准确性和一致性。
设计合理的实体关系,确保数据表之间的 关联性和引用完整性。
约束条件设置
设置主键、外键、唯一性约束等,保证数 据的唯一性和准确性。
触发器应用
监控与日志管理
实践数据库监控和日志管理策 略,确保数据的可追溯性和可
审计性。
THANKS
感谢观看
触发器
使用触发器在插入、更新和删除操作时对实体完整性进行检查和维 护。
应用程序逻辑
在应用程序中编写逻辑代码,对实体数据进行验证和维护实体完整 性。
03
参照完整性
参照完整性定 义
参照完整性概念
指数据库中的数据在引用其他数据时,必须保持数据之间的一致性和准确性, 以确保数据在传递和使用过程中不会发生错误。
01
实体完整性规则
主键的值不能为空或部分为空,也不能有重复值。
02
参照完整性规则
外键的值或者为空,或者在其参照的关系中存在对应的主键值,并且外
键和主键的值应对应相等。
03
用户定义的完整性规则
针对某一具体应用的数据必须满足的语义要求,由用户自己来定义并实
施的数据完整性规则,如数据的取值范围、数据间的联系等。
用户自定义完整性实现方法
触发器
通过定义触发器,在插入、更新或删除操作前后对数据进行检查,确保数据满足用户自定义的完整性规则。
存储过程
通过编写存储过程,对数据进行复杂的完整性检查和处理,确保数据满足用户自定义的完整性规则。
约束 通过在表定义中添加约束条件,限制数据的取值范围或数据间的联系,确保数据满足用户自定义的完整 性规则。常见的约束包括主键约束、外键约束、唯一约束、检查约束等。
数据库系统概论第五章数据库的完整性PPT课件
用户自定义完整性是指根据业务 规则和需求,自定义约束条件来 维护数据的准确性和一致性。
02 数据完整性的实现方式
实体完整性
实体完整性定义
确保表中每条记录的唯一性,通常通过主键约 束来实现。
主键约束
主键是表中的一个或多个字段的组合,其值唯 一标识表中的每条记录。
主键的作用
确保表中数据的唯一性,防止重复记录的出现。
数据库完整性技术面临的挑战和机遇
数据量爆炸式增长
01
随着大数据时代的来临,数据库完整性面临数据量爆炸式增长
带来的存储、处理和管理挑战。
法规遵从与隐私保护
02
随着法规对数据保护的要求日益严格,数据库完整性需满足法
规遵从和隐私保护的需求。
技术创新与市场机遇
03
数据库完整性技术的发展将带来新的市场机遇,推动相关产业
参照完整性定义
维护数据库表之间的关系,确保引用数据的 一致性和准确性。
级联更新和删除
当父表中的数据发生变化时,自动更新或删 除子表中的相关数据。
外键约束
通过在子表中设置外键来引用父表的主键, 确保子表中数据与父表数据的一致性。
更新和删除规则
定义当父表中的数据发生变化时,如何处理 子表中的相关数据。
视图完整性
THANKS FOR WATCHING
感谢您的观看
视图完整性定义
基于一个或多个表的查询结果 集创建视图,并确保该结果集
的完整性。
视图的作用
提供了一个虚拟表,可以基于 现有表的数据进行查询和操作 。
视图的限制
通过在视图上定义约束来确保 数据的完整性和准确性。
视图与数据操作
对视图进行查询、更新、插入 和删除操作时,必须遵守视图
02 数据完整性的实现方式
实体完整性
实体完整性定义
确保表中每条记录的唯一性,通常通过主键约 束来实现。
主键约束
主键是表中的一个或多个字段的组合,其值唯 一标识表中的每条记录。
主键的作用
确保表中数据的唯一性,防止重复记录的出现。
数据库完整性技术面临的挑战和机遇
数据量爆炸式增长
01
随着大数据时代的来临,数据库完整性面临数据量爆炸式增长
带来的存储、处理和管理挑战。
法规遵从与隐私保护
02
随着法规对数据保护的要求日益严格,数据库完整性需满足法
规遵从和隐私保护的需求。
技术创新与市场机遇
03
数据库完整性技术的发展将带来新的市场机遇,推动相关产业
参照完整性定义
维护数据库表之间的关系,确保引用数据的 一致性和准确性。
级联更新和删除
当父表中的数据发生变化时,自动更新或删 除子表中的相关数据。
外键约束
通过在子表中设置外键来引用父表的主键, 确保子表中数据与父表数据的一致性。
更新和删除规则
定义当父表中的数据发生变化时,如何处理 子表中的相关数据。
视图完整性
THANKS FOR WATCHING
感谢您的观看
视图完整性定义
基于一个或多个表的查询结果 集创建视图,并确保该结果集
的完整性。
视图的作用
提供了一个虚拟表,可以基于 现有表的数据进行查询和操作 。
视图的限制
通过在视图上定义约束来确保 数据的完整性和准确性。
视图与数据操作
对视图进行查询、更新、插入 和删除操作时,必须遵守视图
数据库完整性PPT课件
误,提高数据管理的效率和准确性。
04
数据库完整性将更加注重数据质量和数据治理,通过 更加全面的数据质量监控和治理机制来提高数据的准 确性和一致性。
THANKS
数据库完整性的重要性
01
02
03
保证数据质量
数据库完整性是确保数据 准确性和一致性的基础, 有助于提高数据的质量和 可靠性。
维护数据安全
通过确保数据的完整性和 准确性,可以降低因错误 数据导致的风险,从而保 护数据的安全。
提高系统性能
数据库完整性的维护有助 于提高系统的性能和效率, 减少因数据不一致或错误 而导致的系统故障。
数据库完整性的分类
01
02
03
04
实体完整性
确保表中每行数据的唯一性, 通过主键约束实现。
域完整性
限制数据列的取值范围,通过 数据类型、约束和函数实现。
参照完整性
维护表之间数据的一致性,通 过外键约束实现。
用户自定义完整性
根据业务规则和需求定义数据 的约束条件,通过触发器、存
储过程等实现。
02
数据完整性约束
方面具有重要意义。
数据库完整性未来发展
随着技术的发展和业务需求的不断变化,数据库完整 性将面临更多的挑战和机遇。
输标02入题
未来,数据库完整性将更加注重数据安全和隐私保护, 采用更加先进的数据加密技术和访问控制机制来确保 数据的安全性和机密性。
01
03
数据库完整性将更加注重自动化和智能化,利用机器 学习和人工智能技术来自动检测和修复数据异常和错
数据验证策略
对输入数据进行有效性验证,确保数据的正 确性和完整性。
审计策略
对数据库操作进行记录和监控,以便及时发 现和解决数据完整性问题。
04
数据库完整性将更加注重数据质量和数据治理,通过 更加全面的数据质量监控和治理机制来提高数据的准 确性和一致性。
THANKS
数据库完整性的重要性
01
02
03
保证数据质量
数据库完整性是确保数据 准确性和一致性的基础, 有助于提高数据的质量和 可靠性。
维护数据安全
通过确保数据的完整性和 准确性,可以降低因错误 数据导致的风险,从而保 护数据的安全。
提高系统性能
数据库完整性的维护有助 于提高系统的性能和效率, 减少因数据不一致或错误 而导致的系统故障。
数据库完整性的分类
01
02
03
04
实体完整性
确保表中每行数据的唯一性, 通过主键约束实现。
域完整性
限制数据列的取值范围,通过 数据类型、约束和函数实现。
参照完整性
维护表之间数据的一致性,通 过外键约束实现。
用户自定义完整性
根据业务规则和需求定义数据 的约束条件,通过触发器、存
储过程等实现。
02
数据完整性约束
方面具有重要意义。
数据库完整性未来发展
随着技术的发展和业务需求的不断变化,数据库完整 性将面临更多的挑战和机遇。
输标02入题
未来,数据库完整性将更加注重数据安全和隐私保护, 采用更加先进的数据加密技术和访问控制机制来确保 数据的安全性和机密性。
01
03
数据库完整性将更加注重自动化和智能化,利用机器 学习和人工智能技术来自动检测和修复数据异常和错
数据验证策略
对输入数据进行有效性验证,确保数据的正 确性和完整性。
审计策略
对数据库操作进行记录和监控,以便及时发 现和解决数据完整性问题。
数据库系统概论版PPT课件
重点:
掌握DBMS完整性控制机制的三个方面,即完 整性约束条件的定义、检查和违约处理。
用SQL语言定义关系模式的完整性约束条件。 包括定义主码、参照完整性;定义与应用有 关的完整性。
难点:
如何实现完整性的策略,以确保数据的正确 与有效。较复杂的是参照完整性的实现机制。
3
数据库完整性
数据库的完整性
16
参照完整性检查和违约处理
[练习]对表SC和Course,可能破坏参照完 整性的操作情况
SC表增加一个元组 修改SC表的一个元组 从Course表删除一个元组 修改Course表中一个元组的Cno属性值
17
参照完整性检查和违约处理
可能破坏参照完整性的情况及违约处理
被参照表 (例如Student)
数据的正确性和相容性 数据的完整性和安全性是两个不同概念
数据的完整性 防止数据库中存在不正确的数据 防范对象:不合语义的、不正确的数据
数据的安全性 防止恶意的破坏和非法的存取 防范对象:非法用户和非法操作
4
数据库完整性(续)
为维护数据库的完整性,DBMS必须:
提供定义完整性约束条件的机制 提供完整性检查的方法 违约处理
9
实体完整性定义(续)
[例2]将SC表中的Sno,Cno属性组定义为码
CREATE TABLE SC (Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT, PRIMARY KEY (Sno,Cno) /*只能在表级定义主码*/);
20
在主表中修改主码例
例:将S关系中Sno=950001的元组中Sno 值改为960123。设SC关系中有4个元组 的Sno=950001
掌握DBMS完整性控制机制的三个方面,即完 整性约束条件的定义、检查和违约处理。
用SQL语言定义关系模式的完整性约束条件。 包括定义主码、参照完整性;定义与应用有 关的完整性。
难点:
如何实现完整性的策略,以确保数据的正确 与有效。较复杂的是参照完整性的实现机制。
3
数据库完整性
数据库的完整性
16
参照完整性检查和违约处理
[练习]对表SC和Course,可能破坏参照完 整性的操作情况
SC表增加一个元组 修改SC表的一个元组 从Course表删除一个元组 修改Course表中一个元组的Cno属性值
17
参照完整性检查和违约处理
可能破坏参照完整性的情况及违约处理
被参照表 (例如Student)
数据的正确性和相容性 数据的完整性和安全性是两个不同概念
数据的完整性 防止数据库中存在不正确的数据 防范对象:不合语义的、不正确的数据
数据的安全性 防止恶意的破坏和非法的存取 防范对象:非法用户和非法操作
4
数据库完整性(续)
为维护数据库的完整性,DBMS必须:
提供定义完整性约束条件的机制 提供完整性检查的方法 违约处理
9
实体完整性定义(续)
[例2]将SC表中的Sno,Cno属性组定义为码
CREATE TABLE SC (Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT, PRIMARY KEY (Sno,Cno) /*只能在表级定义主码*/);
20
在主表中修改主码例
例:将S关系中Sno=950001的元组中Sno 值改为960123。设SC关系中有4个元组 的Sno=950001
数据库系统概论(第五版)1第5章ppt课件
一般在INSERT、UPDATE、DELETE语句执行后开始检查, 也可以在事务提交时检查
An Introduction to Database System
数据库完整性(续)
3.违约处理
数据库管理系统若发现用户的操作违背了完整性约束条件 ,就采取一定的动作 ➢ 拒绝(NO ACTION)执行该操作 ➢ 级连(CASCADE)执行其他操作
(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
5.1 实体完整性
5.1.1 实体完整性定义 5.1.2 实体完整性检查和违约处理
An Introduction to Database System
5.1.1 实体完整性定义
❖ 关系模型的实体完整性
规定表的每一行在表中是唯一实体。通过索引、unique约束、主键约 束、 identity(a,b)(ab均为正整数,a表示开始数,b表示增幅)等强 制表中的实体唯一。
实体完整性定义(续)
[例5.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
第五章 数据库完整性
An Introduction to Database System
数据库完整性(续)
3.违约处理
数据库管理系统若发现用户的操作违背了完整性约束条件 ,就采取一定的动作 ➢ 拒绝(NO ACTION)执行该操作 ➢ 级连(CASCADE)执行其他操作
(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
5.1 实体完整性
5.1.1 实体完整性定义 5.1.2 实体完整性检查和违约处理
An Introduction to Database System
5.1.1 实体完整性定义
❖ 关系模型的实体完整性
规定表的每一行在表中是唯一实体。通过索引、unique约束、主键约 束、 identity(a,b)(ab均为正整数,a表示开始数,b表示增幅)等强 制表中的实体唯一。
实体完整性定义(续)
[例5.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
第五章 数据库完整性
数据库完整性PPT演示课件
5.1实体完整性
• 5.1.1实体完整性定义
– PRIMARY KEY定义,表级完整性约束或列级完 整性约束
• 5.1.2实体完整性检查和违约处理
每当用户程序对基本表插入一条记录或者对主码列进行 更新操作时,按照实体完整性规则,系统将进行检查: • 主码值是否唯一,如果不唯一则拒绝插入或修改 • 主码各属性是否为空,只要有一个为空就拒绝插入或修改
5.2.2 参照完整性检查和违约处理
• 当上述的不一致发生时,系统可以采用以下的策略: 1 拒绝(No Action)执行
不允许该操作执行。该策略一般设置为默认策略。
2 级联(Cascade)操作 当删除或修改被参照表(Байду номын сангаасtudent)的一个元组造成
了与参照表(SC)的不一致,则删除或修改参照表中的 所有造成不一致的元组。
– CHECK短语(同属性值限制相比,元组级的限制可以 设置不同属性之间的取值的相互约束条件)
• 5.3.4元组上的约束条件检查和违约处理 当往表中插入元组或修改属性的值时,检查属性上的约
束是否被满足,如果不满足则操作被拒绝执行。
5.3用户定义的完整性
5.3用户定义的完整性
5.6触发器
触发器的基础知识
序的性能。
触发器定义之后,其名称存储于sysobjects表中, 定义语句存储在syscomments表中。
定义触发器的Transact-SQL语句中不能出现以下 语句,否则SQL Server将拒绝编译、存储这些语句相 关的触发器。
· 所有的CREATE命令 · 所有的DROP命令 · ALTER TABLE和ALTER DATABASE命令 · TRUNCATE TABLE命令(删除表中所有行) · GRANT和REVOKE命令 · UPDATE STATISTICS命令 · SELECT INTO命令等。(创建表将结果集填充)
华中科技大学数据库数据库完整性
8
An Introduction to Database System
© 2011 by
5.1.1 实体完整性定义
<表约束> ::= [ CONSTRAINT 约束名 ] { [ { PRIMARY KEY | UNIQUE } [ CLUSTERED | NONCLUSTERED ] { ( 列名[ ASC | DESC ] [ ,...n ] ) } ] | FOREIGN KEY [ (列名[ ,...n ] ) ] REFERENCES 被引用表 [ (被引用列[ ,...n ] ) ] [ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ] | CHECK (逻辑表达式) }
© 2011 by
第5章 数据库完整性
5.1 实体完整性
5.2 参照完整性
5.3 用户定义的完整性
5.4 完整性约束命名子句
5.5 域中的完整性限制
5.6 触发器
5.7 小结
4
An Introduction to Database System
© 2011 by
5.1 实体完整性
5.1.1 实体完整性定义 5.1.2 实体完整性检查和违约处理
第5章 数据库完整性
数据库的完整性是指数据的正确性、有 效性和相容性。即数据库中数据与现实 世界的实际情况是相符合的或数据库中 数据自身不存在自相矛盾的现象。
1
An Introduction to Database System
© 2011 by
▪ 完整性 vs 安全性
▪ 完整性 防止不符语义的数据,错误的输入 防范的对象:不合语义的数据
数据库系统概论 课件 第05章_数据库完整性
实体完整性检查和违约处理
5.1.1 实体完整性定义
DB
关系模型的实体完整性
在CREATE TABLE中用PRIMARY KEY定义
单属性构成的码有两种说明方法
定义为列级约束条件 定义为表级约束条件
对多个属性构成的码只有一种说明方法
定义为表级约束条件
PRIMARY KEY约束也称主关键字约束,是实体完 整性约束。该约束用于定义主关键字,它能保证主 关键字的唯一性和非空性。
DB
插入或对主码列进行更新操作时,RDBMS按照实
体完整性规则自动进行检查。包括: 1、检查主码值是否唯一,如果不唯一则拒绝 插入或修改 2、检查主码的各个属性是否为空,只要有一 个为空就拒绝插入或修改
5.1.2 实体完整性检查和违约处理
DB
检查记录中主码值是否唯一的一种方法是进行
全表扫描
全表扫描十 分耗时
名Sname不允许取空值。
CREATE TABLE Student
( Sno CHAR(9) PRIMARY KEY,
Sname CHAR(20) NOT NULL, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20)
);
2、列值唯一
DB
例6
创建一个部门表DEPT,要求部门名称Dname列
5.1.2 实体完整性检查和违约处理
DB
用PRIMARY KEY定义了关系的主码后,每当 用户/应用程序对基本表插入一条记录或者对 主码进行更新操作时,RDBMS将按照实体完 整性规则自动进行检查。
实体完整性规则:若属性(一个或若干个)A
是基本关系R的主属性,则A不能取空值。
5.1.2 实体完整性检查和违约处理
第五章数据库完整性PPT教学课件
5.1.2实体完整性检查和违约处理
按照实体完整性规则,系统自动检查:
主码值是否唯一 主码各属性是否为空
2020/12/10
4
5.2参照完整性
5.2.1参照完整性定义
创建表时,FOREIGN KEY定义 P154 例3
5.为例,四种情况:
2020/12/10
2
第五章 数据库完整性
5.1 实体完整性 5.2 参照完整性 5.3 用户定义的完整性 5.4 完整性约束命名子句 5.6 触发器 5.7 小结
2020/12/10
3
5.1实体完整性
5.1.1实体完整性定义
PRIMARY KEY定义,表级完整性约束或列级完整性约 束
P152 例1 P152 例2
第五章 数据库完整性
什么是数据库的完整性
数据的正确性和相容性 防止不合语义的数据进入数据库。
例: 学生的年龄必须是整数,取值范围为14--29; 学生的性别只能是男或女; 学生的学号一定是唯一的;
完整性:是否真实地反映现实世界
2020/12/10
1
完整性控制机制
1.完整性约束条件定义机制 2.完整性检查机制 3.违约反应
1完整性约束命名子句 P158 :例10 P159 :例11
2修改表中的完整性限制 P159 :例12 P159 :例13
2020/12/10
7
PPT教学课件
谢谢观看
Thank You For Watching
列值非空;列值唯一;CHECK短语 P156 :例5 P157 :例6 P157 :例7 P157 :例8
5.3.2属性上的约束条件检查和违约处理
5.3.3元组上的约束条件的定义
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
删去student中XH=‘99001’的元组 (删去course中KH=‘01’的元组) 则捆绑删除SC中学号为99001(课号为01)的所有元 组
·参照关系中与被参照关系中码值对应元组删除 ·可能层层牵连
若SC又是另一参照关系的被参照关系,则可能又删除 之……。
2020/12/10
10
② 受限删除(restricted) ——参照关系没有一个外码与要删除的被参照关系的主码值相对 应时才执行删除。
不允许空,在关系中取值唯一
例: student (XH,XM,XB,YL)
XH不能为空且唯一
course(KH,KM)
KH不能为空且唯一
Sc(XH,KH,CJ)e table student (XH Char (6) NOT NULL,…,);
PRIMARY KEY
如:职工最低工资不能低于本部门职工平均工资的 50%。
2020/12/10
5
5、动态列级约束 ——修改列定义或列值时的约束。 ① 修改定义约束 ——修改定义时新老值间的约束。 如:将允许空值列改为不允许空值时,若该列值已有 空值,则不可修改。 ② 修改值约束 ——修改时新旧值间的约束。 如年龄不能修改得更小。
2020/12/10
12
② 受限修改(restricted) ——仅当参照关系中没有一个外码值与被参照关系中某个元组主 码值相等时才可修改被参照关系中的该元组主码值。
如:仅当SC中学生无99003时,才可修改student中 XH=99003。 ③ 置空值修改(nullifies) ·修改被参照关系中的主码值; ·将参照关系中的与该主码值相等的外码置为空值。 ④ 说明
员的所属部门号置空。
上述三种,选择哪一种实施,视应用需求确定。
如:学籍管理中,学生离校了,删去选课及学生信息,故需
捆绑删除(course不删)student信息。
·DBMS提供相应选择机制。
2020/12/10
11
3)修改被参照关系主码值情况 ① 捆绑修改(cascade) ·修改被参照关系中主码值。 如修改student中的XH=99003改为XH=99020 ·同时修改参照关系中相等外码值。 则同时SC中所有99003改为99020 ·可能逐层牵连。
3
③ 值域约束 成绩≤100,年龄≤150,性别={男,女} ④ 空值约束 是否允许空值列。 如成绩可为空。 ⑤ 其它约束(如:列的排序、是否唯一等等)
3、静态元组约束 ——对一个(仅一个)元组中各列值间联系的约束。 如:总额≥单价 工龄<年龄
2020/12/10
4
4、静态关系约束 ——对一个关系中若干元组之间或若干关系的联系 的约束。 ① 实体完整性约束; ② 参照完整性约束; ③ 函数依赖约束; ④ 统计约束;
2020/12/10
6
6、动态元组约束 ——修改元组时新旧值间的约束。 例如新工资不低于原工资+工龄*1.5。
7、动态关系约束 ——施加于关系上的前后状态的约束 ① 一致性 ② 原子性
2020/12/10
7
5.3 完整性控制
1、实体完整性(entity integrity)
——对关系模式主属性施加的完整性控制。
·具体应用中,根据应用需求选择上述方法执行。 ·DBMS提供机制支持用户选择。
2020/12/10
13
3、用户定义完整性(integrity of user definition)
1)空值控制 ——对给定属性施加不允许空值限制(NOT NULL) 2)单个属性控制 为:(CJ is Null) OR (CJ BETWEEN 0 AND 100) 3)多属性控制 如:XB=‘男’ AND YL<=30
第5章 数据库完整性
5.1 概述
1、定义( integrity)
——数据的正确性,有效性和相容性。
(防止不符合语义的数据的I/O)
2、功能
1)完整性要求定义;
2)监督事务执行,测试是否违反完整性限制条件;
3)若发生违反情况,则进行相应处理(拒绝、报告、纠正)。
5.2 完整性约束条件
1、基本概念
① 定义
例如:若SC中外码值XH,无一个与主码值(Student.XH, course.KH)对应时才删去student、course中相应元组。
③ 置空值删除(nullifies/set null)
·删去被参照关系中元组;
·参照关系中所有与被参照关系中已删去的主码值相等的外码值
置为空值。
如:删去部门表中的某个部门,则职员表中原来属于该部门的职
② 对应被参照关系中该元组存在;
③ 是否可为空,据应用语义确定。
DEPT(DH,DM,DD), EMPL(DH,EH,XM) EMPL中DH可为空,表示该职员还未分配到任何部门工作。
2020/12/10
9
2)删除被参照关系元组情况 ① 捆绑删除(cascade) ——参照与被参照关系中相关者一起删除。 ·被参照关系中外码元组删除 例如:删除99001号学生(或者01号课程)
2020/12/10
2
2、静态列级约束 ——对一个列的取值域的约束。 ① 数据类型约束 类型、长度、单位、精度 如XM为C型,长8位;YL为I型,长3位。 ② 数据格式约束 如工作证号前2位表示省,后3位表示县,后4位表示单
位顺序号,后5位表示个人顺序号。
应用程序能做的事情, 数据库也可以做
2020/12/10
——DB中数据之上的语义限制条件
② 约束对象
列级、元组级、关系级
2020/12/10
1
③ 约束对象状态 ·静态:反映数据库状态合理性的约束。 ·动态:反映数据库状态变迁的约束。 ④ 约束时机(Immediate constraints) (1)立即约束 ——一条语句执行完后立即检查。 (2)延迟约束(deferred constraints) ——事务执行结束后检查。 转帐,从A到B后,帐才能平,才能进行检查。
2020/12/10
8
2、参照完整性(referential integrity) ——对外码施加的完整性控制。(回忆第二章定义)
参照关系:外码所在关系,如SC
被参照关系:主码(同时又是另一关系中的外码)所在 关系,如student,course。
外码:sc中的XH,KH
1)空值情况
① 为空(SC中XH为空,表示无这个学生,或无学号学生选 修了课程,不合应用语义) ,或;
·参照关系中与被参照关系中码值对应元组删除 ·可能层层牵连
若SC又是另一参照关系的被参照关系,则可能又删除 之……。
2020/12/10
10
② 受限删除(restricted) ——参照关系没有一个外码与要删除的被参照关系的主码值相对 应时才执行删除。
不允许空,在关系中取值唯一
例: student (XH,XM,XB,YL)
XH不能为空且唯一
course(KH,KM)
KH不能为空且唯一
Sc(XH,KH,CJ)e table student (XH Char (6) NOT NULL,…,);
PRIMARY KEY
如:职工最低工资不能低于本部门职工平均工资的 50%。
2020/12/10
5
5、动态列级约束 ——修改列定义或列值时的约束。 ① 修改定义约束 ——修改定义时新老值间的约束。 如:将允许空值列改为不允许空值时,若该列值已有 空值,则不可修改。 ② 修改值约束 ——修改时新旧值间的约束。 如年龄不能修改得更小。
2020/12/10
12
② 受限修改(restricted) ——仅当参照关系中没有一个外码值与被参照关系中某个元组主 码值相等时才可修改被参照关系中的该元组主码值。
如:仅当SC中学生无99003时,才可修改student中 XH=99003。 ③ 置空值修改(nullifies) ·修改被参照关系中的主码值; ·将参照关系中的与该主码值相等的外码置为空值。 ④ 说明
员的所属部门号置空。
上述三种,选择哪一种实施,视应用需求确定。
如:学籍管理中,学生离校了,删去选课及学生信息,故需
捆绑删除(course不删)student信息。
·DBMS提供相应选择机制。
2020/12/10
11
3)修改被参照关系主码值情况 ① 捆绑修改(cascade) ·修改被参照关系中主码值。 如修改student中的XH=99003改为XH=99020 ·同时修改参照关系中相等外码值。 则同时SC中所有99003改为99020 ·可能逐层牵连。
3
③ 值域约束 成绩≤100,年龄≤150,性别={男,女} ④ 空值约束 是否允许空值列。 如成绩可为空。 ⑤ 其它约束(如:列的排序、是否唯一等等)
3、静态元组约束 ——对一个(仅一个)元组中各列值间联系的约束。 如:总额≥单价 工龄<年龄
2020/12/10
4
4、静态关系约束 ——对一个关系中若干元组之间或若干关系的联系 的约束。 ① 实体完整性约束; ② 参照完整性约束; ③ 函数依赖约束; ④ 统计约束;
2020/12/10
6
6、动态元组约束 ——修改元组时新旧值间的约束。 例如新工资不低于原工资+工龄*1.5。
7、动态关系约束 ——施加于关系上的前后状态的约束 ① 一致性 ② 原子性
2020/12/10
7
5.3 完整性控制
1、实体完整性(entity integrity)
——对关系模式主属性施加的完整性控制。
·具体应用中,根据应用需求选择上述方法执行。 ·DBMS提供机制支持用户选择。
2020/12/10
13
3、用户定义完整性(integrity of user definition)
1)空值控制 ——对给定属性施加不允许空值限制(NOT NULL) 2)单个属性控制 为:(CJ is Null) OR (CJ BETWEEN 0 AND 100) 3)多属性控制 如:XB=‘男’ AND YL<=30
第5章 数据库完整性
5.1 概述
1、定义( integrity)
——数据的正确性,有效性和相容性。
(防止不符合语义的数据的I/O)
2、功能
1)完整性要求定义;
2)监督事务执行,测试是否违反完整性限制条件;
3)若发生违反情况,则进行相应处理(拒绝、报告、纠正)。
5.2 完整性约束条件
1、基本概念
① 定义
例如:若SC中外码值XH,无一个与主码值(Student.XH, course.KH)对应时才删去student、course中相应元组。
③ 置空值删除(nullifies/set null)
·删去被参照关系中元组;
·参照关系中所有与被参照关系中已删去的主码值相等的外码值
置为空值。
如:删去部门表中的某个部门,则职员表中原来属于该部门的职
② 对应被参照关系中该元组存在;
③ 是否可为空,据应用语义确定。
DEPT(DH,DM,DD), EMPL(DH,EH,XM) EMPL中DH可为空,表示该职员还未分配到任何部门工作。
2020/12/10
9
2)删除被参照关系元组情况 ① 捆绑删除(cascade) ——参照与被参照关系中相关者一起删除。 ·被参照关系中外码元组删除 例如:删除99001号学生(或者01号课程)
2020/12/10
2
2、静态列级约束 ——对一个列的取值域的约束。 ① 数据类型约束 类型、长度、单位、精度 如XM为C型,长8位;YL为I型,长3位。 ② 数据格式约束 如工作证号前2位表示省,后3位表示县,后4位表示单
位顺序号,后5位表示个人顺序号。
应用程序能做的事情, 数据库也可以做
2020/12/10
——DB中数据之上的语义限制条件
② 约束对象
列级、元组级、关系级
2020/12/10
1
③ 约束对象状态 ·静态:反映数据库状态合理性的约束。 ·动态:反映数据库状态变迁的约束。 ④ 约束时机(Immediate constraints) (1)立即约束 ——一条语句执行完后立即检查。 (2)延迟约束(deferred constraints) ——事务执行结束后检查。 转帐,从A到B后,帐才能平,才能进行检查。
2020/12/10
8
2、参照完整性(referential integrity) ——对外码施加的完整性控制。(回忆第二章定义)
参照关系:外码所在关系,如SC
被参照关系:主码(同时又是另一关系中的外码)所在 关系,如student,course。
外码:sc中的XH,KH
1)空值情况
① 为空(SC中XH为空,表示无这个学生,或无学号学生选 修了课程,不合应用语义) ,或;