数据库系统概论第五章章数据库完整性ppt

合集下载

第四章数据库安全性第五章数据库完整性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课件

数据库数据库完整性控制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)
• 表的一列或几列的组合的值在表中唯一地指定一行 记录,这样的一列或多列称为表的主键,通过它可
强制表的实体完整性。
• 主键不能为空,且不同两行的键值不能相同。 • 表本身并不要求一定要有主键,但最好给表定义主

第五章 数据库完整性

第五章 数据库完整性
7
例2:将SC表中的SNO、cno属性组定义为码 create table sc (sno char(9) not null, cno char(4) not null, grade smallint, primary key(sno,cno) )
8
5.1.2 实体完整性的违约处理

对于实体完整性的检查,包括:
在子表中修改外码(也是主属性)的策略


6. 在参照关系(子表)中修改外码(同时是主码 属性 )。与在参照关系中插入元组类似,可以 有2种策略: 受限修改 递归修改 RDBMS在实现参照完整性时: 需要向用户提供定义主码、外码的机制。 向用户提供按照自己的应用要求选择处理依 赖关系中对应的元组的方法。
6
5.1 实体完整性
5.1.1 定义实体完整性 例1:将student表中的sno属性定义为码 create table student (sno char(9) primary key, sname char(20) not null, ssex char(2), sage smallint, sdept char(20) )
26
5.4 完整性约束命名子句


1. 完整性约束命名子句 Constraint <完整性约束条件名><完整性约 束条件> 例5.10 建立学生登记表 student,要求学号在 90000—99999 之间,姓名不能取空值,年 龄小于30,性别只能是“男”或者“女”
5

数据库完整性控制机制


DBMS完整性控制机制: 1. 提供定义完整性约束条件的机制:提供定义数 据完整性约束条件的方法,完整性约束条件作为 模式的一部分存入数据库中; 2. 提供完整性检查的方法:进行完整性检查,检 查数据是否满足约束条件; 3. 进行违约处理:若有违反,采取相应措施(拒 绝、报告、改正)处理。 完整性子系统:DBMS中执行完整性控制的子系统。 其功能为监督事务的执行,测试其是否违反完整性 约束条件;若有违反,则分情况进行预定的处理。

数据库系统概论第五章数据库的完整性PPT课件

数据库系统概论第五章数据库的完整性PPT课件
用户自定义完整性是指根据业务 规则和需求,自定义约束条件来 维护数据的准确性和一致性。
02 数据完整性的实现方式
实体完整性
实体完整性定义
确保表中每条记录的唯一性,通常通过主键约 束来实现。
主键约束
主键是表中的一个或多个字段的组合,其值唯 一标识表中的每条记录。
主键的作用
确保表中数据的唯一性,防止重复记录的出现。
数据库完整性技术面临的挑战和机遇
数据量爆炸式增长
01
随着大数据时代的来临,数据库完整性面临数据量爆炸式增长
带来的存储、处理和管理挑战。
法规遵从与隐私保护
02
随着法规对数据保护的要求日益严格,数据库完整性需满足法
规遵从和隐私保护的需求。
技术创新与市场机遇
03
数据库完整性技术的发展将带来新的市场机遇,推动相关产业
参照完整性定义
维护数据库表之间的关系,确保引用数据的 一致性和准确性。
级联更新和删除
当父表中的数据发生变化时,自动更新或删 除子表中的相关数据。
外键约束
通过在子表中设置外键来引用父表的主键, 确保子表中数据与父表数据的一致性。
更新和删除规则
定义当父表中的数据发生变化时,如何处理 子表中的相关数据。
视图完整性
THANKS FOR WATCHING
感谢您的观看
视图完整性定义
基于一个或多个表的查询结果 集创建视图,并确保该结果集
的完整性。
视图的作用
提供了一个虚拟表,可以基于 现有表的数据进行查询和操作 。
视图的限制
通过在视图上定义约束来确保 数据的完整性和准确性。
视图与数据操作
对视图进行查询、更新、插入 和删除操作时,必须遵守视图

数据库完整性PPT课件

数据库完整性PPT课件
误,提高数据管理的效率和准确性。
04
数据库完整性将更加注重数据质量和数据治理,通过 更加全面的数据质量监控和治理机制来提高数据的准 确性和一致性。
THANKS
数据库完整性的重要性
01
02
03
保证数据质量
数据库完整性是确保数据 准确性和一致性的基础, 有助于提高数据的质量和 可靠性。
维护数据安全
通过确保数据的完整性和 准确性,可以降低因错误 数据导致的风险,从而保 护数据的安全。
提高系统性能
数据库完整性的维护有助 于提高系统的性能和效率, 减少因数据不一致或错误 而导致的系统故障。
数据库完整性的分类
01
02
03
04
实体完整性
确保表中每行数据的唯一性, 通过主键约束实现。
域完整性
限制数据列的取值范围,通过 数据类型、约束和函数实现。
参照完整性
维护表之间数据的一致性,通 过外键约束实现。
用户自定义完整性
根据业务规则和需求定义数据 的约束条件,通过触发器、存
储过程等实现。
02
数据完整性约束
方面具有重要意义。
数据库完整性未来发展
随着技术的发展和业务需求的不断变化,数据库完整 性将面临更多的挑战和机遇。
输标02入题
未来,数据库完整性将更加注重数据安全和隐私保护, 采用更加先进的数据加密技术和访问控制机制来确保 数据的安全性和机密性。
01
03
数据库完整性将更加注重自动化和智能化,利用机器 学习和人工智能技术来自动检测和修复数据异常和错
数据验证策略
对输入数据进行有效性验证,确保数据的正 确性和完整性。
审计策略
对数据库操作进行记录和监控,以便及时发 现和解决数据完整性问题。

数据库系统概论版PPT课件

数据库系统概论版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

数据库系统概论(第五版)1第5章ppt课件

数据库系统概论(第五版)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
第五章 数据库完整性

第五章-完整性控制

第五章-完整性控制
拒绝(NO ACTION)执行
默认策略
级联(CASCADE)操作
设置为空值(SET-NULL)
对于参照完整性,除了应该定义外码,还应定 义外码列是否允许空值
参照完整性检查和违约处理(续)
1、在被参照关系中删除元组的问题 2、在参照关系中插入元组时的问题 3、在参照关系中,修改外码的问题 4、修改被参照关系中主码的问题
参照完整性的常见实现机制包括:
外键(Foreign Key)
检查(Check) 触发器(Trigger) 存储过程(Stored Procedure)
5.2.1 参照完整性定义(续)
在输入或删除记录时,可以用来保持所有表之间定
义的关系,以确保键值在所有表中一致。 关系模型的参照完整性定义
完整性定义(续)
一条完整性规则可以用一个五元组 (D,O,A,C,P) 表示:
(1)D(Data) 约束作用的数据对象; (2)O(Operation) 触发完整性检查的数据库操作,即当用户 发出什么操作请求时需要检查该完整性规则,是立即检查 还是延迟检查; (3)A(Assertion) 数据对象必须满足的断言或语义约束,这 是规则的主体; (4)C(Condition) 选择A作用的数据对象值的谓词; (5)P(Procedure) 违反完整性规则时触发的过程。
违约处理
如果发现用户的操作请求使数据违背了完整性约束条件, 则采取一定的动作来保证数据的完整性。
违约处理(续)
违反实体完整性规则和用户定义的完整性规则的操 作:
一般是拒绝执行 违反参照完整性的操作:
拒绝执行
接受这个操作,同时执行一些附加的操作,以保证数 据库的状态正确
第五章 数据库完整性
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第十章 数据库安全性 10.3 SQL Server 2000中完整性
< column_constraint > ::= [ CONSTRAINT constraint_name ] { [ NULL | NOT NULL ] | [ { PRIMARY KEY | UNIQUE } [ CLUSTERED | NONCLUSTERED ] [ WITH FILLFACTOR = fillfactor ] [ON {filegroup | DEFAULT} ] ] ] | [ [ FOREIGN KEY ] REFERENCES ref_table [ ( ref_column ) ] [ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ] [ NOT FOR REPLICATION ] ] | CHECK [ NOT FOR REPLICATION ] ( logical_expression ) }
第五章
数据库完整性
为了维护数据库的完整性,DBMS必须能够: 1、提供定义完整性约束条件的机制 2、提供完整性检查的方法 3、违约处理 完整性定义与检查控制由DBMS实现,不必 由应用程序来完成,从而减轻了应用程序员的 负担。 目前的关系系统中对违反实体完整性和用户自 定义完整性一般采用拒绝执行方式。
第五章 数据库完整性
5.1 பைடு நூலகம்体完整性
实体完整性在CREATE TABLE中用PRIMARY KEY 定义,例如: CREATE TABLE SC ( Sno CHAR(9), Cno CHAR(4), Grade SMALLINT, PRIMARY KEY(Sno, Cno) ) 以后每当用户程序对基本表插入一个元组或修改一个 元组的主码时,DBMS将按照实体完整性规则自动进 行检查,包括: 1、检查主码值是否唯一,若不唯一则拒绝插入或修改 2、检查各主属性是否为空,只要有一个为空就拒绝插入 或修改
第十章 数据库安全性 10.3 SQL Server 2000中完整性 deleted 和 inserted 是逻辑(概念)表。这些 表在结构上类似于定义触发器的表(也就是在 其中尝试用户操作的表);这些表用于保存用 户操作可能更改的行的旧值或新值。例如,若 要检索 deleted 表中的所有值,请使用: SELECT * FROM deleted
SELECT @min_lvl = min_lvl, @max_lvl = max_lvl, @emp_lvl = i.job_lvl, @job_id = i.job_id FROM employee e INNER JOIN inserted i ON e.emp_id = i.emp_id JOIN jobs j ON j.job_id = i.job_id IF (@job_id = 1) and (@emp_lvl <> 10) BEGIN RAISERROR ('Job id 1 expects the default level of 10.', 16, 1) ROLLBACK TRANSACTION END
第十章 数据库安全性 10.3 SQL Server 2000中完整性
ON UPDATE {CASCADE | NO ACTION} 指定当要创建的表中的行具有引用关系,并且在父表中更 新该行所引用的行时,要对该行采取的操作。默认设置为 NO ACTION。 如果指定 CASCADE,则在父表中更新被引用行时,也将 在引用表中更新引用行。如果指定 NO ACTION,SQL Server 将产生一个错误并回滚父表中的行更新操作。 例如,在 Northwind 数据库中,Orders 表和 Customers 表之 间有引用关系:Orders.CustomerID 外键引用 Customers.CustomerID 主键。 如果对 Customers 表的某行执行 UPDATE 语句,并且为 Orders.CustomerID 指定 ON UPDATE CASCADE 操作,则 SQL Server 将在 Orders 表中检查是否有与被更新行相关的一行或多 行。如果存在相关行,则 Orders 表中的相关行将随 Customers 表中的被引用行一同更新。 反之,如果指定 NO ACTION,若在 Orders 表中至少有一 行引用 Customers 行,则 SQL Server 将产生一个错误并回滚对 Customers 行的更新操作。
第十章 数据库安全性 10.3 SQL Server 2000中完整性
ON DELETE {CASCADE | NO ACTION} 指定当要创建的表中的行具有引用关系,并且从父表中删 除该行所引用的行时,要对该行采取的操作。默认设置为 NO ACTION。 如果指定 CASCADE,则从父表中删除被引用行时,也将 从引用表中删除引用行。如果指定 NO ACTION,SQL Server 将产生一个错误并回滚父表中的行删除操作。 例如,在 Northwind 数据库中,Orders 表和 Customers 表之 间有引用关系。Orders.CustomerID 外键引用 Customers.CustomerID 主键。 如果对 Customers 表的某行执行 DELETE 语句,并且为 Orders.CustomerID 指定 ON DELETE CASCADE 操作,则 SQL Server 将在 Orders 表中检查是否有与被删除的行相关的一行或 多行。如果存在相关行,则 Orders 表中的相关行将随 Customers 表中的被引用行一同删除。 反之,如果指定 NO ACTION,若在 Orders 表中至少有一 行引用 Customers 表中要删除的行,则 SQL Server 将产生一个 错误并回滚 Customers 表中的删除操作。
/* Get the range of level for this job type from the jobs table. */
DECLARE @min_lvl tinyint, @max_lvl tinyint, @emp_lvl tinyint, @job_id smallint
第十章 数据库安全性 10.3 SQL Server 2000中完整性
第十章 数据库安全性 10.3 SQL Server 2000中完整性 二、CREATE TRIGGER
CREATE TRIGGER trigger_name ON { table | view } [ WITH ENCRYPTION ] { { { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] } [ WITH APPEND ] [ NOT FOR REPLICATION ] AS [ { IF UPDATE ( column ) [ { AND | OR } UPDATE ( column ) ] [ ...n ] | IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask ) { comparison_operator } column_bitmask [ ...n ] }] sql_statement [ ...n ] } }
第十章 数据库安全性 10.3 SQL Server 2000中完整性
< table_constraint > ::= [ CONSTRAINT constraint_name ] { [ { PRIMARY KEY | UNIQUE } [ CLUSTERED | NONCLUSTERED ] { ( column [ ASC | DESC ] [ ,...n ] ) } [ WITH FILLFACTOR = fillfactor ] [ ON { filegroup | DEFAULT } ] ] | FOREIGN KEY [ ( column [ ,...n ] ) ] REFERENCES ref_table [ ( ref_column [ ,...n ] ) ] [ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ] [ NOT FOR REPLICATION ] | CHECK [ NOT FOR REPLICATION ] ( search_conditions ) }
第五章 数据库完整性
5.2 参照完整性
参照完整性在CREATE TABLE中用FOREIGN KEY 定义外码,用REFERENCES指明被参照表的主码。
实现参照完整性时要考虑的几个问题
1、外码能否接受空值 外码在本关系中是主属性时不能取空值 2、被参照关系中删除元组时的违约处理 级联删除、拒绝删除、置空删除(不一定可以) 3、被参照关系中修改元组的主码时的违约处理 级联修改、拒绝修改、置空修改(不一定可以) 4、参照关系中插入元组时的违约处理:拒绝插入 5、参照关系中修改元组的外码时的违约处理:拒绝修 改
因为表级或列级的 CHECK 约束只能对 同一张表中的列定义它们之间的约束条件, 任何表之间的约束 (例如,一些商业规则) 必须定义为Triggers。
第十章 数据库安全性 10.3 SQL Server 2000中完整性
下例创建一个触发器,当插入或更新雇员工作级 别 (job_lvls) 时,该触发器检查指定雇员的工作级别 (由此决定薪水)是否处于为该工作定义的范围内。 若要获得适当的范围,必须引用 jobs 表。 CREATE TRIGGER employee_insupd ON employee FOR INSERT, UPDATE AS
第十章 数据库安全性 10.3 SQL Server 2000中完整性 一、CREATE TABLE
相关文档
最新文档