数据库技术与应用 教学课件 ppt 作者 第5章数据库

上传人:E**** 文档编号:89495200 上传时间:2019-05-25 格式:PPTX 页数:83 大小:281.13KB
返回 下载 相关 举报
数据库技术与应用 教学课件 ppt 作者 第5章数据库_第1页
第1页 / 共83页
数据库技术与应用 教学课件 ppt 作者 第5章数据库_第2页
第2页 / 共83页
数据库技术与应用 教学课件 ppt 作者 第5章数据库_第3页
第3页 / 共83页
数据库技术与应用 教学课件 ppt 作者 第5章数据库_第4页
第4页 / 共83页
数据库技术与应用 教学课件 ppt 作者 第5章数据库_第5页
第5页 / 共83页
点击查看更多>>
资源描述

《数据库技术与应用 教学课件 ppt 作者 第5章数据库》由会员分享,可在线阅读,更多相关《数据库技术与应用 教学课件 ppt 作者 第5章数据库(83页珍藏版)》请在金锄头文库上搜索。

1、第5章 数据库的完整性和安全性,本章学习目标,掌握数据库完整性的基本概念。 清楚数据库完整性约束条件的分类。 掌握并运用SQL实现实体完整性和参照完整性的定义。 运用SQL灵活实现用户自定义完整性的各种约束。 掌握完整性约束的修改方法。 理解触发器的概念和作用。 掌握数据库安全性的基本概念。 清楚DBMS中的安全性保护措施。 清楚SQL中的安全机制。 掌握并运用SQL实现授权和角色机制。 了解其他安全措施。,本章概述,数据库作为资源共享和存放大量数据的场所,如何能更好地保护数据库中的数据就显得尤为重要。数据的完整性和安全性是数据库保护的两个不同方面。安全性是防止非法用户恶意破坏和越权存取数据,

2、确保用户被限制在其想做的事情范围之内。完整性则是防止合法用户使用数据库时无意中造成的破坏,确保用户所做的事情是正确的。即安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。,主要内容,5.1 完整性概述,5.3参照完整性,5.4用户自定义完整性,5.2 实体完整性,5.5 完整性约束的修改,5.6 触发器,5.8 DBMS中的安全性保护,5.9 SQL中的安全性机制,5.7 安全性概述,5.10 其它安全机制,主要内容,5.1 完整性概述,5.3参照完整性,5.4用户自定义完整性,5.2 实体完整性,5.5 完整性约束的修改,5.6 触发器,5.8 DBMS中的安全

3、性保护,5.9 SQL中的安全性机制,5.7 安全性概述,5.10 其它安全机制,5.1.1 完整性概念,数据库的完整性(integrity)的基本含义是指数据库中数据的正确性、有效性和相容性,其目的是防止不符合语义、不正确的数据进入数据库,从而来保证数据库系统能够真实的反映客观现实世界。,正确性(correctness)是指数据的合法性,例如成绩属于数值型数据,只能含有数字而不能含有字母。 有效性(valid)是指数据是否属于所定义域的有效范围,例如性别只能是男或女。 相容性(consistency)是指表示同一事实的两个数据应当一致,不一致即是不相容。例如一个学生不能有两个学号。 DBMS

4、必须提供一种功能来确保数据的正确性,避免不合语义的数据造成的无效操作和错误结果,还要检查先后输入的数据是否一致。,5.1.2完整性约束条件,数据库中的数据要成为有意义的信息,必须满足一定的语义约束条件。数据库中数据应当满足的条件称为“完整性约束条件”,也称为“完整性规则”。它是DBMS控制数据完整性的依据,是整个完整性控制机制的核心。 完整性约束条件作用的对象是关系、元组和属性,这三种对象的状态可以是静态的,也可以是动态的。,5.1.2完整性约束条件,静态约束是关于数据库状态合理性的约束,是指数据库每一确定状态时的数据对象所应满足的约束条件。分别作用于属性、元组和关系就表现为: (1) 静态属

5、性级约束:是对一个属性的取值域的说明,即对数据类型、数据格式和取值范围的约束。如,学生的出生年月日必须为日期型,成绩的取值范围必须在0100等。 (2) 静态元组级约束:是对元组中各个属性值之间关系的约束。如图书管理表中有总库存量,借出量,和剩余量三个属性,其中借出量和剩余量都不得超过总库存量。 (3) 静态关系级约束:是一个关系中各个元组之间或者若干个关系之间常常存在的各种联系的约束。常见的静态关系约束有:实体完整性;参照完整性;函数依赖约束,大部分函数依赖约束都在关系模式中定义;统计约束,即字段值与关系中多个元组的统计值之间的约束关系。,5.1.2完整性约束条件,动态约束是指数据库从一种正

6、确状态转移到另一种状态时,新、旧值之间所应满足的约束条件。例:学生的最高学位,如下动态转移是正确的:学士到硕士、硕士到博士。 (1) 动态属性级约束:是修改定义或属性值时应满足的约束条件,包括两种情况。 修改定义时的约束。例:将允许空值的属性改为不允许空值时,如果该属性当前已存在空值,则规定拒绝修改。 修改属性值时的约束。例:修改属性值时有时需要参照其旧值,或新旧值之间应该满足某种约束条件,如学生的年龄只能增长。 (2) 动态元组级约束:是指修改某个元组的值时需要参照该元组的原有值,或者元组中各个字段之间应当满足某种约束条件。例:给职工提升工资时新工资不得低于原工资+现工龄10。 (3) 动态

7、关系级约束:是加在关系变化前后状态上的限制条件。例:事物一致性、原子性等约束条件。,5.1.2完整性约束条件,完整性约束条件从执行时间上又可分为立即执行约束(immediate CONSTRAINTS)和延迟执行约束(deferred CONSTRAINTS)。 立即执行约束是指在执行用户事物过程中,某一条语句执行完后,系统立即对此数据进行完整性约束条件检查。如果发现用户操作请求违背了立即执行约束,则可以拒绝该操作,以保证数据的完整性。 延迟执行约束是指在整个事物执行结束后再对约束条件进行完整性检查,结果正确后才能提交。如果发现用户操作请求违背了延迟执行约束,而又不知道是哪个事物的操作破坏了完

8、整性,则只能拒绝整个事物,把数据库恢复到该事物执行前的状态。,完整性约束条件还可以作用在数据库上,说明数据库的合法取值。通常,数据库的约束检查是可以延迟到事务提交时进行的,而上述作用于属性、元组和关系的约束检查是立即进行的。所有数据库的更新都不能破坏数据库的完整性。,5.1.3完整性控制机制,为了维护数据库的完整性,DBMS必须提供以下三种机制: 1. 完整性约束条件定义 完整性约束条件也称为完整性规则,是数据库中的数据必须满足的语义约束条件。SQL标准使用了一系列概念来描述完整性,包括关系模型的实体完整性、参照完整性和用户定义完整性。这些完整性一般由SQL的DDL语义来实现,它们作为数据库模

9、式的一部分存入数据字典中。 2. 完整性检查方法 检查数据是否满足已定义的完整性约束条件称为完整性检查。一般在INSERT、UPDATE、DELETE语句执行后开始检查,也可以在事务提交时检查。检查这些操作执行后数据库中的数据是否违背了完整性约束条件。 3. 违约处理 若发现用户操作违背了完整性约束条件,应采取一定的措施,如拒绝(NOACTION)执行该操作,或级连(CASCADE)执行其它操作,进行违约处理以保证数据的完整性。,目前商用的数据库管理系统都支持完整性控制。即完整性定义和检查控制由DBMS实现,不必由应用程序来完成,从而减轻了应用程序员的负担。,主要内容,5.1 完整性概述,5.

10、3参照完整性,5.4用户自定义完整性,5.2 实体完整性,5.5 完整性约束的修改,5.6 触发器,5.8 DBMS中的安全性保护,5.9 SQL中的安全性机制,5.7 安全性概述,5.10 其它安全机制,5.2 实体完整性,实体完整性要求基本表的主码值唯一且不允许为空值。 在SQL中,实体完整性定义是使用CREATE TABLE语句中的PRIMARY KEY短语来实现,或通过使用ALTER TABLE语句中的ADD PRIMARY KEY短语来实现。 对单属性构成的码有两种说明方法: 定义为列级约束条件 定义为表级约束条件 对多个属性构成的码只有一种说明方法,即定义为表级约束条件。,5.2.

11、1 实体完整性定义,例5-1 将Student表中的Sno属性定义为码。,CREATE TABLE Student ( Sno CHAR(7), Sname CHAR(8) NOT NULL, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20), PRIMARY KEY(Sno) ); /* 在表级定义主码*/ 其中,Sno为表Student的主码,它由主码约束说明PRIMARY KEY实现。对于这种情况,还可以直接在列Sno定义的同一行上定义为表Student的主码。如: CREATE TABLE Student ( Sno CHAR(7) PRIMARY

12、 KEY, /* 在列级定义主码*/ Sname CHAR(8) NOT NULL, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20);,注意,如果主码包含多列,则只能在表级定义。,5.2.1 实体完整性定义,例5-2 将SC表中的Sno,Cno属性组定义为主码。 CREATE TABLE SC ( Sno CHAR(7), Cno CHAR(4), Grade SMALLINT, PRIMARY KEY(Sno,Cno) ); /* 只能在表级定义主码*/,5.2.2实体完整性检查和违约处理,在用PRIMAYR KEY语句定义了关系的主码后,每个用户程序

13、对基本表插入一条记录或者对主码列进行更新操作时,RDBMS将按实体完整性规则自动进行检查。包括: (1) 检查主码值是否唯一,如果不唯一则拒绝插入或修改。 (2) 检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改。,检查主码值的唯一性,可以采用全表扫描法或B+树索引扫描法。 全表扫描法:从外存依次将表的每个数据块读入内存,判断块中的每一条记录的主码值与待插入(或修改)记录的主码值是否相同,如果相同,则阻止插入(或修改)。全表扫描法如图5-1所示。,待插入或修改的记录,5.2.2实体完整性检查和违约处理,B+树索引扫描法 全表扫描法是十分耗时的,为了避免对基本表进行全表扫描,DBMS核

14、心一般都在主码上自动建立一个B+树索引,通过扫描索引来查找基本表中是否存在相同的主码值,这将大大提高效率。 例如,如果新插入记录的主码值是25,通过主码索引,从B+树的根结点开始查找,只要读取3个结点就可以知道该主码值已经存在,所以不能插入这条记录。这3个结点是根结点(51)、中间结点(12 30)、叶节点(15 20 25)。如果新插入记录的主码值是86,也只要查找3个结点就可以知道该主码值不存在,所以可以插入该记录,如图5-2所示。,主要内容,5.1 完整性概述,5.3参照完整性,5.4用户自定义完整性,5.2 实体完整性,5.5 完整性约束的修改,5.6 触发器,5.8 DBMS中的安全

15、性保护,5.9 SQL中的安全性机制,5.7 安全性概述,5.10 其它安全机制,5.3参照完整性,参照完整性是指基本关系R的任何一个元组在外码F上的取值要么是空值,要么是被参照关系S中一个元组的主码值。 SQL不仅可以实现实体完整性的定义,还可以通过CREATE TABLE语句定义参照完整性规则。即用户可以在建表时定义哪些列为外码列,这个外码对应于哪个表的主码。 一般来讲,参照完整性的定义包括两个部分: (1) 外码说明,它由FOREIGN KEY(列名)语句来描述。 (2) 被引用的表名和列名,由REFERENCES语句描述。,5.3.1 参照完整性定义,例5-3 关系SC中一个元组表示一

16、个学生选修的某门课程的成绩,Sno 代表Student中的一个学生,Cno代表Course中的一门课程。因此Sno,Cno分别是对Student和Course的参照引用。,CREATE TABLE SC ( Sno CHAR(7), Cno CHAR(4), Grade SMALLINT, PRIMARY KEY (Sno,Cno), /*在表级定义实体完整性*/ FOREIGN KEY Sno REFERENCES Student(Sno), /*在表级定义参照完整性*/ FOREIGN KEY Cno REFERENCES Course(Cno) /*在表级定义参照完整性*/ );,5.3.2参照完整性检查和违约处理,定义了参照完整性,对参照表和被参照表进行修改操作有可能会破坏参照完整性,系统首

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号