数据库完整性与安全_第1页
数据库完整性与安全_第2页
数据库完整性与安全_第3页
数据库完整性与安全_第4页
数据库完整性与安全_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1School of Information Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 第第9 9章章 数据库完整性与安全数据库完整性与安全 现代学习理念的四大支柱是:现代学习理念的四大支柱是:l 学会认知学会认知l 学会做事学会做事l 学会合作学会合作l 学会生存学会生存学会学习学会学习一书的作者:方州一书的作者:方州2School of Information Technology, Jiangxi University of F

2、inance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 第第9章数据库完整性与安全章数据库完整性与安全n 数据库的安全性数据库的安全性:保护数据库以:保护数据库以防止不合法使用防止不合法使用所造所造成的成的数据泄密、更改或破坏数据泄密、更改或破坏。n 数据库的完整性数据库的完整性:防止数据库中存在:防止数据库中存在不符合语义不符合语义的数的数据,其防范对象是据,其防范对象是不合语义的、不正确的不合语义的、不正确的数据。数据。n 主要教学目标如下:主要教学目标如下:l要求熟练掌握要求熟练掌握DBMS安全性保护的基本原理

3、与方法,并能安全性保护的基本原理与方法,并能熟练运用熟练运用SQL中的中的GRANT和和REVOKE语句进行授权;语句进行授权;l要求熟练掌握要求熟练掌握DBMS完整性保护措施,并能熟练运用完整性保护措施,并能熟练运用SQL中的中的DDL语句进行完整性约束定义;语句进行完整性约束定义;l要求熟练掌握数据库编程中的要求熟练掌握数据库编程中的游标游标概念及其使用方法;概念及其使用方法;l熟练运用熟练运用触发器触发器完成复杂的完整性约束和审计功能;完成复杂的完整性约束和审计功能;l熟练运用熟练运用存储过程存储过程编写复杂的业务处理和查询统计功能。编写复杂的业务处理和查询统计功能。3School of

4、 Information Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 目目 录录9.4数据库安全性数据库安全性 9.1数据库完整性数据库完整性 9.29.3游标游标 存储过程存储过程触发器触发器应用与安全设计应用与安全设计 9.59.64School of Information Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9

5、 章章 数据库完整性与安全数据库完整性与安全 9.1数据库安全性数据库安全性 n 安全性问题不是数据库系统所独有的,所有计算机安全性问题不是数据库系统所独有的,所有计算机系统都有这个问题。系统都有这个问题。n 数据库系统中大量数据集中存放,且为许多最终用数据库系统中大量数据集中存放,且为许多最终用户户直接共享直接共享,安全性问题更为突出。,安全性问题更为突出。n 9.1.1 数据库安全的基本概念数据库安全的基本概念n 9.1.2 安全标准安全标准n 9.1.3 SQL存取控制机制存取控制机制n 9.1.4 审计机制审计机制5School of Information Technology, J

6、iangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 9.1.1 数据库安全的基本概念数据库安全的基本概念n 数据库数据库安全保护目标安全保护目标是确保只有是确保只有授权用户授权用户才能访问才能访问数据库,未被授权的人员则无法接近数据。数据库,未被授权的人员则无法接近数据。n 安全措施安全措施是指计算机系统中用户直接或通过应用程是指计算机系统中用户直接或通过应用程序访问数据库所要经过的序访问数据库所要经过的安全认证过程安全认证过程。n 数据库安全认证过程如图数据库安全认证

7、过程如图9-1所示所示6School of Information Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 9.1.1 数据库安全的基本概念数据库安全的基本概念n 用户标识与鉴别用户标识与鉴别(identification & authentication)l当用户访问数据库时,要先将其当用户访问数据库时,要先将其用户名用户名(user name)与与密密码码(password)提交给数据库管理系统进行认证;提交给数据库管理系统进行

8、认证;l只有在确定其身份合法后,才能进入数据库进行数据存只有在确定其身份合法后,才能进入数据库进行数据存取操作。取操作。n 数据库安全保护数据库安全保护l通过身份认证的用户,拥有了进入数据库的通过身份认证的用户,拥有了进入数据库的“凭证凭证”;l用户在数据库中用户在数据库中执行什么操作执行什么操作,需通过,需通过“存取控制存取控制”或或视图视图进行进行权限分配权限分配。7School of Information Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安

9、全数据库完整性与安全 9.1.1 数据库安全的基本概念数据库安全的基本概念l存取控制存取控制:决定用户对数据库中的:决定用户对数据库中的哪些对象哪些对象进行操作,进行进行操作,进行何种操作何种操作。存取控制机制主要包括两部分:存取控制机制主要包括两部分:定义用户权限定义用户权限及将用户权限登记到数据字典中;及将用户权限登记到数据字典中;合法权限检查合法权限检查:当用户发出操作请求后,当用户发出操作请求后,DBMS查找数据字典查找数据字典并根据安全规则进行合法权限检查,若操作请求超出了定义的并根据安全规则进行合法权限检查,若操作请求超出了定义的权限,系统将拒绝执行此操作。权限,系统将拒绝执行此操

10、作。l视图视图:通过为不同的用户定义不同的视图,达到:通过为不同的用户定义不同的视图,达到限制用户访限制用户访问范围问范围的目的。的目的。视图机制能隐藏用户无权存取的数据视图机制能隐藏用户无权存取的数据,从而自动地对数据库提,从而自动地对数据库提供一定程度的安全保护;供一定程度的安全保护;视图的主要功能在于提供数据库的视图的主要功能在于提供数据库的逻辑独立性逻辑独立性,其安全性保护其安全性保护不太精细,往往不能达到应用系统的要求;不太精细,往往不能达到应用系统的要求;在实际应用中,在实际应用中,通常将视图与存取控制机制结合起来使用通常将视图与存取控制机制结合起来使用,如,如先通过视图屏蔽一部分

11、保密数据,然后进一步定义存取权限。先通过视图屏蔽一部分保密数据,然后进一步定义存取权限。8School of Information Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 9.1.1 数据库安全的基本概念数据库安全的基本概念l审计审计:是一种监视措施,用于:是一种监视措施,用于跟踪并记录跟踪并记录有关数据的访有关数据的访问活动。问活动。审计追踪把用户对数据库的所有操作自动记录下来,存放在审计追踪把用户对数据库的所有操作自动记录下来

12、,存放在审审计日志计日志(audit log)中;中;审计日志的内容一般包括:审计日志的内容一般包括:操作类型操作类型(如修改、查询、删除如修改、查询、删除);操作终端标识与操作者标识;操作终端标识与操作者标识;操作日期和时间;操作日期和时间;操作所涉及到的相关数据操作所涉及到的相关数据(如基本表、视图、记录、属性如基本表、视图、记录、属性);数据库的数据库的前映像前映像(即修改前的值即修改前的值)和和后映像后映像(即修改后的值即修改后的值)。利用这些信息,可找出利用这些信息,可找出非法存取数据库非法存取数据库的人、时间和内容等;的人、时间和内容等;数据库管理系统往往将审计作为可选特征,允许操

13、作者打开或数据库管理系统往往将审计作为可选特征,允许操作者打开或关闭审计功能。关闭审计功能。9School of Information Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 9.1.1 数据库安全的基本概念数据库安全的基本概念n 操作系统安全保护操作系统安全保护l通过操作系统提供的安全措施来保证数据库的安全性通过操作系统提供的安全措施来保证数据库的安全性 n 数据密码存储数据密码存储l访问控制和存取控制访问控制和存取控制可将用户

14、的可将用户的应用系统访问范围应用系统访问范围最小化最小化和和数据对象操作权限数据对象操作权限最低化,但对一些敏感数据进行最低化,但对一些敏感数据进行“加密加密存储存储”也是系统提供的安全策略;也是系统提供的安全策略;l数据加密数据加密(data encryption):防止数据库中数据存储和传输:防止数据库中数据存储和传输失密的有效手段;失密的有效手段;l加密的基本思想加密的基本思想:先根据一定的算法将原始数据:先根据一定的算法将原始数据(即明文即明文, plaintext)加密为不可直接识别的格式加密为不可直接识别的格式(即密文即密文, ciphertext),然后数据以密文的方式存储和传输

15、然后数据以密文的方式存储和传输。10School of Information Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 9.1.3 SQL存取控制机制存取控制机制 n SQL支持支持受控的存取保护受控的存取保护:l 在在自主存取控制自主存取控制中,用户对不同的数据对象有不同的存取权限;中,用户对不同的数据对象有不同的存取权限;l 不同的用户对同一对象有不同的权限;不同的用户对同一对象有不同的权限;l 用户可将其拥有的存取权限转授给其

16、他用户。用户可将其拥有的存取权限转授给其他用户。n 自主存取控制自主存取控制通过通过SQL的的GRANT和和REVOKE语句实现。语句实现。n 用户权限用户权限:是指用户可以在哪些数据对象上进行哪些类型:是指用户可以在哪些数据对象上进行哪些类型的操作。它由两个要素组成:的操作。它由两个要素组成:数据对象数据对象和和操作类型操作类型。l 定义存取权限称为定义存取权限称为授权授权(authorization);l 授权粒度授权粒度可以精细到可以精细到字段级字段级,也可以粗到,也可以粗到关系级关系级;l 授权粒度越细,授权子系统就越灵活,但是系统的开销也会相应授权粒度越细,授权子系统就越灵活,但是系

17、统的开销也会相应地增大。地增大。11School of Information Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 9.1.3 SQL存取控制机制存取控制机制 n 授权分为授权分为数据库级数据库级、表级表级和和列级列级权限。权限。l在在SQL Server中权限只能由担任不同中权限只能由担任不同角色角色的用户来分配;的用户来分配;l不同类型的用户有不同的等级;不同类型的用户有不同的等级;l下图给出了授权等级图。下图给出了授权等级

18、图。12School of Information Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 9.1.3 SQL存取控制机制存取控制机制 n GRANT和和REVOKE语句向用户授予或收回对数据语句向用户授予或收回对数据的操作权限。的操作权限。n 对对数据库模式的授权数据库模式的授权则由则由DBA在创建用户时实现。在创建用户时实现。n 创建用户创建用户的语法如下:的语法如下: CREATE USER WITH DBA | RESOUR

19、CE | CONNECTl该语法在该语法在SQL Server 2000中不支持;中不支持;l在在SQL Server 2000中使用中使用系统存储过程系统存储过程sp_addlogin和和sp_adduser实现,详见实验教材。实现,详见实验教材。13School of Information Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 9.1.3 SQL存取控制机制存取控制机制 n 权限的授予与收回权限的授予与收回lGRANT和和R

20、EVOKE有两种权限:有两种权限:目标权限目标权限和和命令权限命令权限。l命令权限命令权限的授予与收回的授予与收回主要主要指指DDL操作权限操作权限,语法分别为:,语法分别为: GRANT all | TO public | REVOKE all | FROM public | 可以是可以是create database、create default、create function、create procedure、create rule、create table、create view、create index、backup database和和backup log等;等;一次可授多种权限,

21、授多种权限时,一次可授多种权限,授多种权限时,权限之间用逗号分隔权限之间用逗号分隔;如果如果具有创建对象的具有创建对象的create权限权限,则,则自动具有其创建对象的自动具有其创建对象的修改权限修改权限alter和删除权限和删除权限drop;14School of Information Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 9.1.3 SQL存取控制机制存取控制机制 对于对于基本表基本表,自动具有在所创建表上创建、删除和修改自

22、动具有在所创建表上创建、删除和修改触发器触发器的权限的权限;修改修改alter和删除权限和删除权限drop不额外授权;不额外授权;all:表示上述所有权限;:表示上述所有权限;public:表示所有的用户;:表示所有的用户;:指定的用户名列表。如果将某组权限同时授:指定的用户名列表。如果将某组权限同时授予多个用户,则用户名之间用逗号分隔。予多个用户,则用户名之间用逗号分隔。例例9.1 将创建表和视图的权限授予将创建表和视图的权限授予user01和和user02用户:用户:GRANT create table, create view TO user01, user02例例9.2 从从user0

23、2收回创建视图的权限:收回创建视图的权限:REVOKE create view FROM user0215School of Information Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 9.1.3 SQL存取控制机制存取控制机制 l目标权限目标权限的授予和收回的授予和收回主要主要指指DML操作权限操作权限,语法分别为:,语法分别为: GRANT all | ON () TO public | WITH GRANT OPTION

24、REVOKE all | ON () FROM public | CASCADE | RESTRICT可以是可以是update、select、insert、delete、excute和和allexcute针对针对存储过程存储过程授予执行权限;授予执行权限;update、select、insert、delete针对针对基本表基本表和和视图视图授权;授权;all表示所有的权限。表示所有的权限。对象对象的的创建者创建者自动拥有该对象的插入、删除、更新和查询操作自动拥有该对象的插入、删除、更新和查询操作权限权限;过程过程的的创建者创建者自动拥有所创建过程的执行权限自动拥有所创建过程的执行权限;16Sc

25、hool of Information Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 9.1.3 SQL存取控制机制存取控制机制CASCADE:级联收回;:级联收回;RESTRICT:缺省值,若转赋了权限,则不能收回;:缺省值,若转赋了权限,则不能收回;WITH GRANT OPTION:允许将指定对象上的:允许将指定对象上的目标权目标权限限授予其它安全帐户。授予其它安全帐户。不允许循环授权不允许循环授权,即不允许将得到的权限授予其祖,即

26、不允许将得到的权限授予其祖先,如下图所示:先,如下图所示:17School of Information Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 9.1.3 SQL存取控制机制存取控制机制n 例例9.3 将将存储过程存储过程proSearchBySno的执行权限的执行权限授予用户授予用户u1、u2和和u3:GRANT excute ON proSearchBySno TO u1, u2, u3n 例例9.4 将对将对班级表班级表Cl

27、ass的查询、插入权限的查询、插入权限授予用户授予用户u1,且用,且用户户u1可以转授其所获得的权限给其它用户:可以转授其所获得的权限给其它用户:GRANT select, insert ON Class TO u1 WITH GRANT OPTIONn 例例9.5 将对将对学生表的性别、出生日期的查询和修改权限学生表的性别、出生日期的查询和修改权限授予授予用户用户u3、u4和和u5,且不可以转授权限:,且不可以转授权限: GRANT select, update ON Student(sex, birthday) TO u3, u4, u5l如果是对如果是对列列授予权限,命令项可以包括授予权

28、限,命令项可以包括select或或update或两或两者组合;者组合;l若使用了若使用了select * ,则必须对表的所有列赋予,则必须对表的所有列赋予select权限。权限。18School of Information Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 9.1.3 SQL存取控制机制存取控制机制n 例例9.6 将表将表Score的若干权限分别授予用户的若干权限分别授予用户u1、u2、u3、u4、u5和和u6。l 将将表表

29、Score的所有权限的所有权限授予用户授予用户u1,且可以转授权限,且可以转授权限GRANT all ON Score TO u1 WITH GRANT OPTIONl 用户用户u1将将表表Score的所有权限的所有权限授予用户授予用户u2,且可以转授权限,且可以转授权限GRANT all ON Score TO u2 WITH GRANT OPTIONl 用户用户u2将将表表Score的查询和插入权限的查询和插入权限授予用户授予用户u5,且不可以转授,且不可以转授GRANT select, insert ON Score TO u5l 用户用户u2将将表表Score的所有权限的所有权限授予用

30、户授予用户u4,且可以转授权限,且可以转授权限GRANT all ON Score TO u4 WITH GRANT OPTIONl 用户用户u4将将表表Score的查询和删除权限的查询和删除权限授予用户授予用户u6,且可以转授,且可以转授GRANT select, delete ON Score TO u6 WITH GRANT OPTIONl 通过上述的授权,用户通过上述的授权,用户u1、u2、u3、u4、u5和和u6分别得到的权分别得到的权限如下图所示:限如下图所示:19School of Information Technology, Jiangxi University of Fin

31、ance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 9.1.3 SQL存取控制机制存取控制机制n 例例9.7 用户用户u2将转授给用户将转授给用户u4的对的对表表Score的修改和查询权限的修改和查询权限收回:收回:REVOKE select, update ON Score FROM u4 CASCADEl本例必须本例必须级联收回级联收回,因为,因为u4将该表的查询和删除权限转授将该表的查询和删除权限转授给了给了u6。n 例例9.8 用户用户u4将转授给用户将转授给用户u6的对的对表表Score的查询权限的查询权限

32、收回:收回:REVOKE select ON Score FROM u6 n 数据库角色数据库角色l被命名的一组与数据库操作相关的权限;被命名的一组与数据库操作相关的权限;l角色角色是权限的集合是权限的集合,可以为一组,可以为一组具有相同权限具有相同权限的用户创建的用户创建一个一个角色角色;l角色角色简化了授权操作。简化了授权操作。20School of Information Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 9.1.3 S

33、QL存取控制机制存取控制机制n 角色角色的创建、授权、转授和收回语句的语法如下:的创建、授权、转授和收回语句的语法如下:l角色角色的创建,在的创建,在SQL Server 2000中,使用系统存储过程中,使用系统存储过程sp_addrole创建角色:创建角色: sp_addrole l给给角色角色授权:授权: GRANT all | ON TO l将将角色角色授予其他的角色或用户:授予其他的角色或用户:GRANT TO | WITH ADMIN OPTIONl角色角色权限的收回:权限的收回:REVOKE all | ON FROM l从从角色角色或用户中收回角色:或用户中收回角色:REVOKE

34、 FROM | 21School of Information Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 9.1.3 SQL存取控制机制存取控制机制n 例例9.9 通过角色实现将一组权限授予一个用户。通过角色实现将一组权限授予一个用户。l创建一个角色创建一个角色 R1:sp_addrole R1l使用使用GRANT语句,使角色语句,使角色R1拥有拥有Student表的表的select、update、insert权限权限:GRANT s

35、elect, update, insert ON Student TO R1l将角色将角色R1授予用户授予用户u1、u2和和u3,使他们具有角色,使他们具有角色R1所包含所包含的全部权限:的全部权限:GRANT R1 TO u1, u2, u3l通过角色通过角色R1可以一次性地收回已授予用户可以一次性地收回已授予用户u1的这的这3个权限:个权限:REVOKE R1 FROM u122School of Information Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据

36、库完整性与安全数据库完整性与安全 9.1.3 SQL存取控制机制存取控制机制n 例例9.10 将对表将对表Student的删除权限授予角色的删除权限授予角色R1,并,并收回查询权限。收回查询权限。 GRANT delete ON Student TO R1 REVOKE select ON Student FROM R1l通过修改通过修改角色角色的权限,一次性地将用户的权限,一次性地将用户u2和和u3的权限全的权限全部修改了。部修改了。23School of Information Technology, Jiangxi University of Finance & Economics数据库

37、系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 目目 录录9.4数据库安全性数据库安全性 9.1数据库完整性数据库完整性 9.29.3游标游标 存储过程存储过程触发器触发器应用与安全设计应用与安全设计 9.59.624School of Information Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 9.2数据库完整性数据库完整性 n 数据库系统在运行过程中,用户无论通过什么方式对数数据库

38、系统在运行过程中,用户无论通过什么方式对数据库中的数据进行操作,据库中的数据进行操作,都必须保证数据的正确性都必须保证数据的正确性。l如,在学生成绩管理数据库如,在学生成绩管理数据库ScoreDB中,必须保证中,必须保证学生表学生表Student中的中的学号是唯一的学号是唯一的,性别只能取性别只能取“男男”和和“女女”;l在在学生成绩表学生成绩表Score中,中,课程成绩必须在课程成绩必须在0100分之间分之间,且,且学号必须在学号必须在Student表中存在表中存在(即只有是本校的学生才可以(即只有是本校的学生才可以选课),等等。选课),等等。n 数据库的完整性数据库的完整性是针对数据库中的

39、数据进行是针对数据库中的数据进行正确性正确性的维的维护,防止数据库中存在护,防止数据库中存在不符合语义、不正确的数据不符合语义、不正确的数据。25School of Information Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 9.2数据库完整性数据库完整性 n 为维护数据库的为维护数据库的完整性完整性,数据库管理系统提供:,数据库管理系统提供:l完整性约束条件定义完整性约束条件定义完整性约束条件也称为完整性规则完整性约束条件也称

40、为完整性规则,是数据库中的数据必须满足,是数据库中的数据必须满足的的语义约束条件语义约束条件;由由SQL的的DDL实现实现,作为,作为模式的一部分模式的一部分存入数据库中。存入数据库中。l完整性检查方法完整性检查方法检查数据是否满足已定义的完整性约束条件称为检查数据是否满足已定义的完整性约束条件称为完整性检查完整性检查;一般在一般在insert、delete、update执行执行后开始检查,或后开始检查,或事务提交事务提交时进时进行检查。行检查。l违约处理违约处理若发现用户操作违背了完整性约束条件,应采取一定的措施,如若发现用户操作违背了完整性约束条件,应采取一定的措施,如拒绝操作等。拒绝操作

41、等。n 商用商用DBMS都支持完整性控制。都支持完整性控制。定义数据库模式时,除了非定义数据库模式时,除了非常复杂的约束外,都可以很明确地对完整性约束加以说明常复杂的约束外,都可以很明确地对完整性约束加以说明。26School of Information Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 9.2数据库完整性数据库完整性 n 9.2.1 完整性约束条件完整性约束条件n 9.2.2 实体完整性实体完整性n 9.2.3 参照完整性

42、参照完整性n 9.2.4 用户自定义完整性用户自定义完整性n 9.2.5 完整性约束的修改完整性约束的修改 27School of Information Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 9.2.1 完整性约束条件完整性约束条件n 完整性约束条件完整性约束条件作用的对象作用的对象可以是可以是关系关系、元组元组、列列三种:三种:l列约束列约束主要是主要是列的类型、取值范围、精度、是否允许空值列的类型、取值范围、精度、是否允许空

43、值等的约束条件;等的约束条件;l元组约束元组约束是元组中是元组中属性间联系属性间联系的约束;的约束;l关系约束关系约束是若干是若干元组间、关系集合上以及关系之间的联系元组间、关系集合上以及关系之间的联系的约束。的约束。n 完整性约束,其状态可是完整性约束,其状态可是静态的静态的,也可是,也可是动态的动态的。n 静态约束静态约束:指数据库每一确定状态时的数据对象所指数据库每一确定状态时的数据对象所应满足的约束条件。应满足的约束条件。l反映反映数据库状态合理性数据库状态合理性的约束;的约束;l静态约束主要表现在:静态约束主要表现在:28School of Information Technolog

44、y, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 9.2.1 完整性约束条件完整性约束条件静态列级约束静态列级约束:对列的取值域的说明,包括以下几方面:对列的取值域的说明,包括以下几方面:对数据类型的约束,包括数据的类型、长度、单位、精度等;对数据类型的约束,包括数据的类型、长度、单位、精度等;对数据格式的约束;对数据格式的约束;对取值范围或取值集合的约束;对取值范围或取值集合的约束;对空值的约束;对空值的约束;其他约束。其他约束。静态元组约束静态元组约束:规

45、定元组的各个列之间的约束关系。:规定元组的各个列之间的约束关系。静态关系约束静态关系约束:在一个关系的各个元组之间或者若干关系之间:在一个关系的各个元组之间或者若干关系之间常存在各种联系或约束。常见的静态关系约束有:常存在各种联系或约束。常见的静态关系约束有:实体完整性约束;实体完整性约束;参照完整性约束;参照完整性约束;函数依赖约束,大部分函数依赖约束,大部分函数依赖函数依赖约束都在关系模式中定义;约束都在关系模式中定义;统计约束,即字段值与关系中多个元组的统计值之间的约束关系统计约束,即字段值与关系中多个元组的统计值之间的约束关系.29School of Information Techn

46、ology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 9.2.1 完整性约束条件完整性约束条件n 动态约束动态约束:指数据库从一种状态转变为另一种状态时指数据库从一种状态转变为另一种状态时的的新、旧值之间新、旧值之间所应满足的约束条件。所应满足的约束条件。l反映反映数据库状态变迁数据库状态变迁的约束;的约束;l动态约束主要表现在:动态约束主要表现在:动态列级约束动态列级约束:修改:修改列定义或列值列定义或列值时应满足的约束条件。时应满足的约束条件。修改列定

47、义时的约束修改列定义时的约束。如,将允许空值的列改为不允许空如,将允许空值的列改为不允许空值时,如果该列已存在空值,则拒绝这种修改。值时,如果该列已存在空值,则拒绝这种修改。修改列值时的约束修改列值时的约束。修改列值有时需要参照其旧值,并且修改列值有时需要参照其旧值,并且新旧值之间需要满足某种约束条件。新旧值之间需要满足某种约束条件。例如,职工工资调整不得低于其原来工资,学生年龄只能例如,职工工资调整不得低于其原来工资,学生年龄只能增长等。增长等。30School of Information Technology, Jiangxi University of Finance & Econom

48、ics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 9.2.1 完整性约束条件完整性约束条件动态元组约束动态元组约束:指修改元组的值时元组中各个字段间需要满:指修改元组的值时元组中各个字段间需要满足某种约束条件。足某种约束条件。例如,职工工资调整时例如,职工工资调整时新工资不得低于原工资新工资不得低于原工资+工龄工龄*1.5等。等。动态关系约束动态关系约束:动态关系约束是加在关系变化前后状态上的:动态关系约束是加在关系变化前后状态上的限制条件。限制条件。例如,事务例如,事务一致性一致性、原子性原子性等约束条件。等约束条件。n 完整性约束又分为

49、完整性约束又分为立即执行立即执行的约束和的约束和延迟执行延迟执行的约束:的约束:l立即执行约束立即执行约束(immediate CONSTRAINTS):检查是否违背:检查是否违背完整性约束的时机是在完整性约束的时机是在一条语句一条语句执行完后立即检查执行完后立即检查。l延迟执行约束延迟执行约束(deferred CONSTRAINTS):需要延迟到:需要延迟到整个整个事务事务执行结束后再进行检查执行结束后再进行检查。31School of Information Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据

50、库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 9.2.1 完整性约束条件完整性约束条件n 在在SQL中,所有的完整性约束,用户既可以对其中,所有的完整性约束,用户既可以对其命名命名(使用(使用CONSTRAINT),也可由具体的数据),也可由具体的数据库系统取默认的名字。库系统取默认的名字。l如果是如果是用户所命名的约束,修改约束时比较方便用户所命名的约束,修改约束时比较方便;l如果由系统自动给约束命名,则必须通过访问系统的数如果由系统自动给约束命名,则必须通过访问系统的数据字典查到相应的约束名称,才可以对其进行修改。据字典查到相应的约束名称,才可以对其进行修改。3

51、2School of Information Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 9.2.2 实体完整性实体完整性n 实体完整性实体完整性要求基本表的要求基本表的主码值唯一且不允许为空值主码值唯一且不允许为空值。n 在在SQL中:中:l实体完整性定义使用实体完整性定义使用CREATE TABLE语句中的语句中的PRIMARY KEY短语实现;短语实现;l或使用或使用ALTER TABLE语句中的语句中的ADD PRIMARY K

52、EY短短语实现;语实现;l有关有关CREATE TABLE、ALTER TABLE语句的语法详见语句的语法详见第第3章章3.8节(节(P112115)。)。l对对单属性单属性构成的构成的主码主码可定义为可定义为列级约束列级约束,也可定义为,也可定义为表级表级约束约束;l对对多个属性多个属性构成的构成的主码主码,只能定义为,只能定义为表级约束表级约束。33School of Information Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安

53、全 9.2.2 实体完整性实体完整性n 实体完整性定义实体完整性定义n 例例9.11 在班级表在班级表Class中将中将classNo定义为主码。定义为主码。CREATE TABLE Class ( classNo char(6) NOT NULL, -班级号班级号 className varchar(30) unique NOT NULL, -班级名班级名 institute varchar(30) NOT NULL, -所属学院所属学院 grade smallint default 0 NOT NULL, -年级年级 classNum tinyint NULL, -班级人数班级人数 CON

54、STRAINT ClassPK PRIMARY KEY (classNo) ) l本例将本例将classNo定义为主码,使用定义为主码,使用CONSTRAINT短语为该短语为该约束命名为约束命名为ClassPK;l该主码定义为该主码定义为表级约束表级约束。34School of Information Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 9.2.2 实体完整性实体完整性n 该例还可按下面的方式定义:该例还可按下面的方式定义:CR

55、EATE TABLE Class ( classNo char(6) NOT NULL PRIMARY KEY, -班级号班级号 .) l将主码将主码classNo定义为定义为列级约束列级约束,且由,且由系统取约束名称系统取约束名称。n 可为约束取名,如:可为约束取名,如:CREATE TABLE Class ( classNo char(6) NOT NULL -班级号班级号 CONSTRAINT ClassPK PRIMARY KEY, . ) l将主码将主码classNo定义为定义为列级约束列级约束,且,且约束取名为约束取名为ClassPK。35School of Information

56、 Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 9.2.2 实体完整性实体完整性n 例例9.12 在学生成绩表在学生成绩表Score中将中将studentNo、courseNo定义为主码定义为主码。CREATE TABLE Score ( studentNo char(7) NOT NULL, -学号学号 courseNo char(3) NOT NULL, -课程号课程号 score numeric(5, 1) default 0 NO

57、T NULL, -成绩成绩 /* 主码由两个属性构成,必须作为主码由两个属性构成,必须作为表级完整性表级完整性进行定义进行定义 */ CONSTRAINT ScorePK PRIMARY KEY (studentNo, courseNo) n 也可以写成:也可以写成:CREATE TABLE Score ( studentNo char(7) NOT NULL, -学号学号 courseNo char(3) NOT NULL, -课程号课程号 score numeric(5, 1) default 0 NOT NULL, -成绩成绩 /* 主码由两个属性构成,必须作为主码由两个属性构成,必须作

58、为表级完整性表级完整性进行定义进行定义 */ PRIMARY KEY (studentNo, courseNo) l由系统自动为约束取名由系统自动为约束取名。36School of Information Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 9.2.2 实体完整性实体完整性n 实体完整性的检查和违约处理实体完整性的检查和违约处理l当当插入插入或或对主码列进行更新对主码列进行更新操作时,数据库管理系统按照操作时,数据库管理系统按照

59、实体完整性规则自动进行检查,包括:实体完整性规则自动进行检查,包括:检查主码值是否唯一,如果不唯一则拒绝插入或修改;检查主码值是否唯一,如果不唯一则拒绝插入或修改;检查主码值的唯一性,可采用检查主码值的唯一性,可采用全表扫描全表扫描或或B+树索引扫描树索引扫描。全表扫描法:全表扫描法:从外存依次将该表的每一数据块读入内存;从外存依次将该表的每一数据块读入内存;判断块中的每一条记录的主码值与待插入判断块中的每一条记录的主码值与待插入(或修改或修改)记录的主码记录的主码值是否相同;值是否相同;如果相同,则阻止插入如果相同,则阻止插入(或修改或修改)!全表扫描法如图全表扫描法如图9-6所示:所示:3

60、7School of Information Technology, Jiangxi University of Finance & Economics数据库系统原理与设计数据库系统原理与设计第第 9 9 章章 数据库完整性与安全数据库完整性与安全 9.2.2 实体完整性实体完整性l全表扫描法十分耗费系统资源。全表扫描法十分耗费系统资源。l数据库管理系统一般对主码建立一个数据库管理系统一般对主码建立一个B+树索引。树索引。l通过通过扫描索引扫描索引来查找基本表中是否存在相同的主码值。来查找基本表中是否存在相同的主码值。lB+树索引扫描法如图树索引扫描法如图9-7所示:所示:38School o

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论