数据库安全保护_第1页
数据库安全保护_第2页
数据库安全保护_第3页
数据库安全保护_第4页
数据库安全保护_第5页
已阅读5页,还剩144页未读, 继续免费阅读

下载本文档

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

文档简介

1、本章要点本章要点 随着社会信息化的不断深化,各种数据库的使随着社会信息化的不断深化,各种数据库的使用也越来越广泛。例如,一个企业管理信息系统的用也越来越广泛。例如,一个企业管理信息系统的全部数据、国家机构的事务管理信息、国防情报机全部数据、国家机构的事务管理信息、国防情报机密信息、基于密信息、基于WEBWEB动态发布的网上购物信息等等,它动态发布的网上购物信息等等,它们都集中或分布地存放在大大小小的数据库中。我们都集中或分布地存放在大大小小的数据库中。我们知道数据库系统中的数据是由们知道数据库系统中的数据是由DBMSDBMS统一进行管理统一进行管理和控制的。为了适应和满足数据共享的环境和要求,

2、和控制的。为了适应和满足数据共享的环境和要求,DBMSDBMS要保证数据库及整个系统的正常运转,防止数要保证数据库及整个系统的正常运转,防止数据意外丢失和不一致数据的产生,以及当数据库遭据意外丢失和不一致数据的产生,以及当数据库遭受破坏后能迅速地恢复正常,这就是数据库的安全受破坏后能迅速地恢复正常,这就是数据库的安全保护。保护。本章要点本章要点 DBMSDBMS对数据库的安全保护功能是通过四方面来实对数据库的安全保护功能是通过四方面来实现的,即现的,即安全性控制、完整性控制、并发性控制和数安全性控制、完整性控制、并发性控制和数据库恢复据库恢复。本章就将从这四方面来介绍数据库的安全。本章就将从这

3、四方面来介绍数据库的安全保护功能,重点要求读者掌握它们的含义及实现这些保护功能,重点要求读者掌握它们的含义及实现这些安全保护功能的方法,可结合安全保护功能的方法,可结合SQL Server 2000SQL Server 2000加深四加深四部分内容的理解与操作技能。部分内容的理解与操作技能。5.1.1. 数据库安全性概述5.1.2. 安全性控制的一般方法5.1.3. 安全性控制的其它方法5.1.4. SQL Server 2000安全性概述返回本章首页 数据库的安全性数据库的安全性是指保护数据库,以防止非法使用所造成数是指保护数据库,以防止非法使用所造成数据的泄露、更改或破坏。据的泄露、更改或

4、破坏。 安全性问题有许多方面,其中包括:安全性问题有许多方面,其中包括: (1 1)法律、社会和伦理方面,例如请求查询信息的人是不有合)法律、社会和伦理方面,例如请求查询信息的人是不有合法的权力;法的权力; (2 2)物理控制方面,例如计算机机房或终端是否应该加锁或用)物理控制方面,例如计算机机房或终端是否应该加锁或用其他方法加以保护;其他方法加以保护; (3 3)政策方面,确定存取原则,允许哪些用户存取哪些数据;)政策方面,确定存取原则,允许哪些用户存取哪些数据; (4 4)运行与技术方面,使用口令时,如何使口令保持秘密;)运行与技术方面,使用口令时,如何使口令保持秘密;BACK(5 5)硬

5、件控制方面,)硬件控制方面,CPUCPU是否提供任何安全性方面的功是否提供任何安全性方面的功能,诸如存储保护键或特权工作方式;能,诸如存储保护键或特权工作方式;(6 6)操作系统安全性方面,在主存储器和数据文件用过)操作系统安全性方面,在主存储器和数据文件用过以后,操作系统是否把它们的内容清除掉;以后,操作系统是否把它们的内容清除掉;(7 7)数据库系统本身安全性方面。)数据库系统本身安全性方面。BACK 安全性控制安全性控制是指要尽可能地杜绝所有可能的数据库非是指要尽可能地杜绝所有可能的数据库非 法访问。法访问。 用户非法使用数据库可以有很多种情况。例如,编写用户非法使用数据库可以有很多种情

6、况。例如,编写合法的程序绕过合法的程序绕过DBMSDBMS授权机制,通过操作系统直接存授权机制,通过操作系统直接存取、修改或备份有关数据。用户访问非法数据,无论取、修改或备份有关数据。用户访问非法数据,无论它们是有意的还是无意的它们是有意的还是无意的, ,都应该加以严格控制,因此都应该加以严格控制,因此,系统还要考虑数据信息的流动问题并加以控制,否,系统还要考虑数据信息的流动问题并加以控制,否则有潜在的危险性。因为数据的流动可能使无权访问则有潜在的危险性。因为数据的流动可能使无权访问的用户获得访问权利。的用户获得访问权利。BACK 例如,甲用户可以访问表例如,甲用户可以访问表T1T1,但无权访

7、问表,但无权访问表T2T2,如果乙用户把表如果乙用户把表T2T2的所有记录添加到表的所有记录添加到表T1T1中之后,则中之后,则由于乙用户的操作,使甲用户获得了对表由于乙用户的操作,使甲用户获得了对表T2T2中记录的中记录的访问。此外,用户可以多次利用允许的访问结果,经访问。此外,用户可以多次利用允许的访问结果,经过逻辑推理得到他无权访问的数据。过逻辑推理得到他无权访问的数据。 为防止这一点,访问的许可权还要结合过去访问为防止这一点,访问的许可权还要结合过去访问的情况而定。可见安全性的实施是要花费一定代价,的情况而定。可见安全性的实施是要花费一定代价,并需缜密考虑的。并需缜密考虑的。安全保护策

8、略就是要以最小的代价安全保护策略就是要以最小的代价来最大程度防止对数据的非法访问,通常需要层层设来最大程度防止对数据的非法访问,通常需要层层设置安全措施。置安全措施。 实际上,数据库系统的安全性问题,类似于整个实际上,数据库系统的安全性问题,类似于整个计算机系统一级级层层设置安全的情况,其安全控制计算机系统一级级层层设置安全的情况,其安全控制模型一般如图模型一般如图5.15.1所示。所示。BACK DBMS 用户 DB OS 用户标识和鉴定 用户存取权限控制 操作系统安全保护 密码存储 根据图根据图5.15.1的安全模型,当用户进入计算机系统时,系的安全模型,当用户进入计算机系统时,系统首先根

9、据输入的用户标识进行身份的鉴定,只有合法的统首先根据输入的用户标识进行身份的鉴定,只有合法的用户才准许进入系统。用户才准许进入系统。 对已进入系统的用户,对已进入系统的用户,DBMSDBMS还要进行存取控制,只允还要进行存取控制,只允许用户进行合法的操作许用户进行合法的操作BACK DBMSDBMS是建立在操作系统之上的,安全的操作系统是建立在操作系统之上的,安全的操作系统是数据库安全的前提。操作系统应能保证数据库中的是数据库安全的前提。操作系统应能保证数据库中的数据必须由数据必须由DBMSDBMS访问,而不允许用户越过访问,而不允许用户越过DBMSDBMS,直接,直接通过操作系统或其它方式访

10、问。通过操作系统或其它方式访问。 数据最后可以通过密码的形式存储到数据库中。数据最后可以通过密码的形式存储到数据库中。能做到非法者即使得到了加密数据,也无法识别它的能做到非法者即使得到了加密数据,也无法识别它的安全效果。安全效果。 下面,本书就数据库有关的用户标识和鉴定、存下面,本书就数据库有关的用户标识和鉴定、存取控制、定义视图、数据加密和审计等几类安全性措取控制、定义视图、数据加密和审计等几类安全性措施作一讨论。施作一讨论。BACK 1 1、用户标识和鉴别、用户标识和鉴别 用户标识和鉴定是系统提供的最外层的安全保护用户标识和鉴定是系统提供的最外层的安全保护措施,其方法是由系统提供一定的方式

11、让用户标识自措施,其方法是由系统提供一定的方式让用户标识自己的名字或身份,系统内部记录着所有合法用户的标己的名字或身份,系统内部记录着所有合法用户的标识,每次用户要求进入系统时,由系统进行核实,通识,每次用户要求进入系统时,由系统进行核实,通过鉴定后才提供机器的使用权。过鉴定后才提供机器的使用权。 用户标识和鉴定的方法有用户标识和鉴定的方法有 : : (1) (1)单用户名鉴别法单用户名鉴别法 : :用一个用户名或用户标识符来标用一个用户名或用户标识符来标 明用户的身份,系统以此来鉴别用户的合法性明用户的身份,系统以此来鉴别用户的合法性 . .BACK(2)(2)用户名与口令联合鉴别法用户名与

12、口令联合鉴别法 : :用户标识符是用户公开的用户标识符是用户公开的标识,它不足以成为鉴别用户身份的凭证。标识,它不足以成为鉴别用户身份的凭证。 (3)(3)透明公式鉴别法透明公式鉴别法: :每个用户都预先约定好一个过程或每个用户都预先约定好一个过程或者函数,鉴别用户身份时,系统提供一个随机数,用者函数,鉴别用户身份时,系统提供一个随机数,用户根据自己预先约定的计算过程或者函数进行计算,户根据自己预先约定的计算过程或者函数进行计算,系统根据计算结果辨别用户身份的合法性。系统根据计算结果辨别用户身份的合法性。BACK 2 2、用户存取权限控制、用户存取权限控制 用户存取权限指的是不同的用户对于不同

13、的数据对象用户存取权限指的是不同的用户对于不同的数据对象允许执行的操作权限。允许执行的操作权限。 存取权限存取权限由两个要素组成,由两个要素组成,数据对象和操作类型数据对象和操作类型。定。定义一个用户的存取权限就是要定义这个用户可以在哪些数义一个用户的存取权限就是要定义这个用户可以在哪些数据对象上进行哪些类型的操作。据对象上进行哪些类型的操作。 在数据库系统中,定义用户存取权限称为在数据库系统中,定义用户存取权限称为. . 授权有两种:授权有两种: (1)(1)系统权限系统权限: :由由DBADBA授予某些数据库用户,只有得到授予某些数据库用户,只有得到系统权限,才能成为数据库用户系统权限,才

14、能成为数据库用户 . . BACK (2)(2)对象权限对象权限 : :可以由可以由DBADBA授予,也可以由数据对授予,也可以由数据对象的创建者授予,使数据库用户具有对某些数据对象象的创建者授予,使数据库用户具有对某些数据对象进行某些操作的权限进行某些操作的权限. . 这些授权定义经过编译后以一张这些授权定义经过编译后以一张授权表授权表的形式存的形式存放在数据字典中。授权表主要有三个属性,用户标识、放在数据字典中。授权表主要有三个属性,用户标识、数据对象和操作类型数据对象和操作类型。 BACK 3 3、视图机制视图机制 为不同的用户定义不同的视图,可以限制各个用为不同的用户定义不同的视图,可

15、以限制各个用户的访问范围。通过视图机制把要保密的数据对无权户的访问范围。通过视图机制把要保密的数据对无权存取这些数据的用户隐藏起来,从而自动地对数据提存取这些数据的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。供一定程度的安全保护。 4 4、数据加密数据加密 数据加密是防止数据库中数据在存储和传输中失数据加密是防止数据库中数据在存储和传输中失密的有效手段密的有效手段. .加密的基本思想是根据一定的算法将原加密的基本思想是根据一定的算法将原始数据加密成为不可直接识别的格式始数据加密成为不可直接识别的格式, ,数据以密码的形数据以密码的形式存储和传输式存储和传输 . . BACK 加密方法

16、有两种加密方法有两种: : (1) (1)替换方法替换方法: :该方法使用密钥将明文中的每一个字符该方法使用密钥将明文中的每一个字符转换为密文中的一个字符转换为密文中的一个字符. . (2) (2)转换方法转换方法: :该方法将明文中的字符按不同的顺序重该方法将明文中的字符按不同的顺序重新排列新排列. . 用密码存储数据,在存入时需加密,在查询时需解密用密码存储数据,在存入时需加密,在查询时需解密, ,这个过程会占用较多的系统资源,这个过程会占用较多的系统资源,降低了数据库的性能降低了数据库的性能。 5 5、审计审计 实际上任何系统的安全性措施都不是绝对可靠的,窃实际上任何系统的安全性措施都不

17、是绝对可靠的,窃密者总有办法打破这些控制密者总有办法打破这些控制. .审计功能是一种监视措施,审计功能是一种监视措施,跟踪记录有关数据的访问活动跟踪记录有关数据的访问活动. . BACK1 1、强制存取控制强制存取控制(MAC)MAC) 有些数据库系统的数据要求很高的保密性,通常具有有些数据库系统的数据要求很高的保密性,通常具有静态的严格的分层结构,静态的严格的分层结构,强制存取控制能实现这种高保密强制存取控制能实现这种高保密性要求性要求. .这种方法的这种方法的基本思想基本思想在于每个数据对象(文件、在于每个数据对象(文件、记录记录或宇段等记录记录或宇段等) )赋予一定的密级,级别从高到低有

18、:赋予一定的密级,级别从高到低有:绝密级、机密级、秘密级和公用级绝密级、机密级、秘密级和公用级. .每个用户也具有相应每个用户也具有相应的级别,称为许可证级别的级别,称为许可证级别. . 在系统运行时,采用如下两条简单规则:在系统运行时,采用如下两条简单规则: (1)(1)用户用户U U只能查看比它级别低或同级的数据只能查看比它级别低或同级的数据. . (2) (2)用户用户U U只能修改和它同级的数据只能修改和它同级的数据. . 强制存取控制是一种独立于值的控制方法强制存取控制是一种独立于值的控制方法. .它的优点是它的优点是系统能执行系统能执行“信息流控制信息流控制”. . BACK2 2

19、、统计数据库的安全性统计数据库的安全性 查询仅仅是某些记录的统计值,例如求记录数、和、查询仅仅是某些记录的统计值,例如求记录数、和、平均值等。在统计数据库中,虽然不允许用户查询单平均值等。在统计数据库中,虽然不允许用户查询单个记录的信息,但是用户可以通过处理足够多的汇总个记录的信息,但是用户可以通过处理足够多的汇总信息来分析出单个记录的信息信息来分析出单个记录的信息. . 在统计数据库中,对查询应作下列限制在统计数据库中,对查询应作下列限制: 一个查询查到的记录个数至少是一个查询查到的记录个数至少是n n; 两个查询查到的记录的两个查询查到的记录的“交交”数目至多是数目至多是m.m. 保证数据

20、库安全性的另一个方法是保证数据库安全性的另一个方法是“数据污染数据污染”,也就是在回答查询时,提供一些偏离正确值的数据,也就是在回答查询时,提供一些偏离正确值的数据,以免数据泄露以免数据泄露. . BACK SQL Server 2000SQL Server 2000安全系统的构架建立在用户和用户安全系统的构架建立在用户和用户组的基础上组的基础上 .SQL Server.SQL Server提供了提供了3 3种安全管理模式,即标种安全管理模式,即标准模式、集成模式和混合模式,数据库设计者和数据库管准模式、集成模式和混合模式,数据库设计者和数据库管理员可以根据实际情况进行选择理员可以根据实际情况

21、进行选择 . . 1 1、两个安全性阶段两个安全性阶段 : :身份验证和授权身份验证和授权 . . 2 2、用户权限用户权限 : :登录创建在登录创建在WindowsWindows中,中, 而非而非 SQL ServerSQL Server中中. . BACK 当用户连接到当用户连接到SQL Server 2000SQL Server 2000实例后,他们可以实例后,他们可以执行的活动由授予以下帐户的权限确定:执行的活动由授予以下帐户的权限确定: (1 1)用户的安全帐户;)用户的安全帐户; (2 2)用户的安全帐户所属)用户的安全帐户所属WindowsWindows组或角色层次结;组或角色层

22、次结; (3 3)用户若要进行任何涉及更改数据库定义或访问)用户若要进行任何涉及更改数据库定义或访问数据的活动,则必须有相应的权限数据的活动,则必须有相应的权限. .BACK 3 3、视图安全机制视图安全机制 SQL Server 2000SQL Server 2000通过限制可由用户使用的数据,通过限制可由用户使用的数据,可以将视图作为安全机制。用户可以访问某些数据,可以将视图作为安全机制。用户可以访问某些数据,进行查询和修改,但是表或数据库的其余部分是不可进行查询和修改,但是表或数据库的其余部分是不可见的,也不能进行访问。见的,也不能进行访问。 4 4、加密方法加密方法 SQL Serve

23、r 2000SQL Server 2000支持加密或可以加密的内容为:支持加密或可以加密的内容为: SQL Server SQL Server 中存储的登录和应用程序角色密码;中存储的登录和应用程序角色密码; 作为网络数据包而在客户端和服务器端之间发送的作为网络数据包而在客户端和服务器端之间发送的数据;数据; SQL Server 2000SQL Server 2000中如下对象的定义内容:存储过程、中如下对象的定义内容:存储过程、用户定义函数、视图、触发器、默认值、规则等。用户定义函数、视图、触发器、默认值、规则等。 BACK 5 5、审核活动审核活动 SQL Server 2000SQL

24、Server 2000提供审核功能,用以跟踪和记提供审核功能,用以跟踪和记录每个录每个 SQL Server SQL Server 实例上已发生的活动(如成功和实例上已发生的活动(如成功和失败的记录)。失败的记录)。SQL Server 2000 SQL Server 2000 还提供管理审核记还提供管理审核记录的接口,即录的接口,即 SQL SQL 事件探查器。只有事件探查器。只有 sysadminsysadmin 固定固定安全角色的成员才能启用或修改审核,而且审核的每安全角色的成员才能启用或修改审核,而且审核的每次修改都是可审核的事件。次修改都是可审核的事件。BACK5.2.1.数据库完整

25、性概述5.2.2.完整性规则的组成5.2.3.完整性约束条件的分类5.2.4.SQL Server 2000完整性概述返回本章首页 数据库的完整性数据库的完整性是指保护数据库中数据的正确性、有效性是指保护数据库中数据的正确性、有效性和相容性,防止错误的数据进入数据库造成无效操作。和相容性,防止错误的数据进入数据库造成无效操作。 显然,维护数据库的完整性非常重要,数据库中的数据是显然,维护数据库的完整性非常重要,数据库中的数据是否具备完整性关系到数据能否真实地反映现实世界。否具备完整性关系到数据能否真实地反映现实世界。 数据库的完整性和安全性是数据库保护的两个不同的方面数据库的完整性和安全性是数

26、据库保护的两个不同的方面 安全性是保护数据库,以防止非法使用所造成数据的泄露、安全性是保护数据库,以防止非法使用所造成数据的泄露、更改或破坏,安全性措施的防范对象是非法用户和非法操作;更改或破坏,安全性措施的防范对象是非法用户和非法操作;完整性是防止合法用户使用数据库时向数据库中加入不符合完整性是防止合法用户使用数据库时向数据库中加入不符合语义的数据,完整性措施的防范对象是不合语义的数据。语义的数据,完整性措施的防范对象是不合语义的数据。 BACK 完整性规则主要由以下三部分构成:完整性规则主要由以下三部分构成: (1 1)触发条件)触发条件:规定系统什么时候使用规则检查数据;:规定系统什么时

27、候使用规则检查数据; (2 2)约束条件)约束条件:规定系统检查用户发出的操作请求违背:规定系统检查用户发出的操作请求违背了什么样的完整性约束条件;了什么样的完整性约束条件; (3 3)违约响应)违约响应:规定系统如果发现用户的操作请求违背:规定系统如果发现用户的操作请求违背了完整性约束条件,应该采取一定的动作来保证数据的完了完整性约束条件,应该采取一定的动作来保证数据的完整性,即违约时要做的事情。整性,即违约时要做的事情。 完整性规则从执行时间完整性规则从执行时间上可分为上可分为立即执行约束立即执行约束(Immediate ConstraintsImmediate Constraints)和

28、)和延迟执行约束延迟执行约束(Deferred Deferred ConstraintsConstraints)。)。 立即执行约束立即执行约束是指在执行用户事务过程中,某一条语是指在执行用户事务过程中,某一条语句执行完成后,系统立即对此数据进行完整性约束条件检句执行完成后,系统立即对此数据进行完整性约束条件检查;查;延迟执行约束延迟执行约束是指在整个事务执行结束后,再对约束是指在整个事务执行结束后,再对约束条件进行完整性检查,结果正确后才能提交。条件进行完整性检查,结果正确后才能提交。 BACK 一条完整性规则可以用一个五元组(一条完整性规则可以用一个五元组(D D,O O,A A,C C,

29、P P)来形式化地表示。其中:来形式化地表示。其中: D D(datadata):代表约束作用的数据对象;):代表约束作用的数据对象; O O(operationoperation):代表触发完整性检查的数据库操作,):代表触发完整性检查的数据库操作, 即当用户发出什么操作请求时需要检查该完整性规则;即当用户发出什么操作请求时需要检查该完整性规则; A A(assertionassertion):代表数据对象必须满足的语义约束,这):代表数据对象必须满足的语义约束,这 是规则的主体;是规则的主体; C C(conditioncondition):代表选择):代表选择A A作用的数据对象值的谓词

30、;作用的数据对象值的谓词; P P(procedureprocedure):代表违反完整性规则时触发执行的操作):代表违反完整性规则时触发执行的操作 过程。过程。 BACK例如,例如,对于对于“学号不能为空学号不能为空”的这条完整性约束,的这条完整性约束,D D:代表约束作用的数据对象为:代表约束作用的数据对象为SNOSNO属性;属性;O O(operationoperation):当用户插入或修改数据时需要检查该):当用户插入或修改数据时需要检查该完整性规则;完整性规则;A A(assertionassertion):):SNOSNO不能为空;不能为空;C C(conditioncondit

31、ion):):A A可作用于所有记录的可作用于所有记录的SNOSNO属性;属性;P P(procedureprocedure):拒绝执行用户请求。):拒绝执行用户请求。BACKl在数据库领域中,有四种最常用的数据模型,它们是:在数据库领域中,有四种最常用的数据模型,它们是:被称为非关系模型的层次模型、网状模型、关系模型和被称为非关系模型的层次模型、网状模型、关系模型和面向对象模型。本章简要介绍层次模型、网状模型、关面向对象模型。本章简要介绍层次模型、网状模型、关系模型。系模型。l层次模型是数据库系统中最早出现的数据模型,它用树层次模型是数据库系统中最早出现的数据模型,它用树形结构表示各类实体以

32、及实体间的联系。层次模型数据形结构表示各类实体以及实体间的联系。层次模型数据库系统的典型代表是库系统的典型代表是IBMIBM公司的公司的IMSIMS(Information Information Management SystemsManagement Systems)数据库管理系统,这是一个曾经)数据库管理系统,这是一个曾经广泛使用的数据库管理系统。现实世界中有一些的实体广泛使用的数据库管理系统。现实世界中有一些的实体之间的联系本来就呈现出一种很自然的层次关系,如家之间的联系本来就呈现出一种很自然的层次关系,如家庭关系,行政关系。庭关系,行政关系。BACK1 1、值的约束和结构的约束、值的

33、约束和结构的约束 从约束条件使用的对象来分,可把约束分为值的约束和从约束条件使用的对象来分,可把约束分为值的约束和结构的约束。结构的约束。l值的约束值的约束:即对数据类型、数据格式、取值范围等进行:即对数据类型、数据格式、取值范围等进行规定。规定。(1 1)对数据类型的约束)对数据类型的约束,包括数据的类型、长度、单位和,包括数据的类型、长度、单位和精度等。例如,规定学生性别的数据类型应为字符型,精度等。例如,规定学生性别的数据类型应为字符型,长度为长度为2 2。(2 2)对数据格式的约束)对数据格式的约束。例如,规定出生日期的数据格式。例如,规定出生日期的数据格式为为YYYY.MM.DDYY

34、YY.MM.DD。(3 3)对取值范围的约束)对取值范围的约束。例如,月份的取值范围为。例如,月份的取值范围为1 11212,日期日期1 13131。BACK(4 4)对空值的约束)对空值的约束。空值表示未定义或未知的值,它与。空值表示未定义或未知的值,它与零值和空格不同。有的列值允许空值,有的则不允许。零值和空格不同。有的列值允许空值,有的则不允许。例如,学号和课程号不可以为空值,但成绩可以为空例如,学号和课程号不可以为空值,但成绩可以为空值。值。l结构约束结构约束:即:即对数据之间联系的约束对数据之间联系的约束。 数据库中同一关系的不同属性之间,应满足一定的约数据库中同一关系的不同属性之间

35、,应满足一定的约束条件,同时,不同关系的属性之间也有联系,也应束条件,同时,不同关系的属性之间也有联系,也应满足一定的约束条件。满足一定的约束条件。BACK常见的结构约束有如下四种:常见的结构约束有如下四种:(1 1)函数依赖约束函数依赖约束:说明了同一关系中不同属性之间应:说明了同一关系中不同属性之间应满足的约束条件。如:满足的约束条件。如:2NF2NF,3NF3NF,BCNFBCNF这些不同的范式这些不同的范式应满足不同的约束条件。大部分函数依赖约束都是隐含应满足不同的约束条件。大部分函数依赖约束都是隐含在关系模式结构中的,特别是对于规范化程度较高的关在关系模式结构中的,特别是对于规范化程

36、度较高的关系模式,都是由模式来保持函数依赖的。系模式,都是由模式来保持函数依赖的。(2 2)实体完整性约束实体完整性约束:说明了关系主键(或主码)的属:说明了关系主键(或主码)的属性列必须唯一,其值不能为全空或部分为空。性列必须唯一,其值不能为全空或部分为空。(3 3)参照完整性约束参照完整性约束:说明了不同关系的属性之间的约:说明了不同关系的属性之间的约束条件,即外部键(外码)的值应能够在被参照关系的束条件,即外部键(外码)的值应能够在被参照关系的主键值中找到或取空值。主键值中找到或取空值。BACK(4 4)用户自定义完整性用户自定义完整性:从实际应用系统出发,按需定:从实际应用系统出发,按

37、需定 义属性之间要满足的约束条件。义属性之间要满足的约束条件。(5 5)统计约束统计约束,规定某个属性值与关系多个元组的统计,规定某个属性值与关系多个元组的统计值之间必须满足某种约束条件。例如,规定系主任的值之间必须满足某种约束条件。例如,规定系主任的奖金不得高于该系的平均奖金的奖金不得高于该系的平均奖金的50%50%,不得低于该系的,不得低于该系的平均奖金的平均奖金的15%15%。这里该系平均奖金的值就是一个统计。这里该系平均奖金的值就是一个统计计算值。计算值。 其中,其中,实体完整性约束和参照完整性约束是关系实体完整性约束和参照完整性约束是关系模型的两个极其重要的约束,被称为关系的两个不变

38、模型的两个极其重要的约束,被称为关系的两个不变性性。而统计约束实现起来开销很大。而统计约束实现起来开销很大。BACK2 2、静态约束和动态约束、静态约束和动态约束完整性约束从约束对象的状态可分为静态约束和动态约束。完整性约束从约束对象的状态可分为静态约束和动态约束。l静态约束静态约束 静态约束是指在数据库每一个确定状态时的数据对象所应静态约束是指在数据库每一个确定状态时的数据对象所应满足的约束条件,它是反映数据库状态合理性的约束,这满足的约束条件,它是反映数据库状态合理性的约束,这是最重要的一类完整性约束。上面介绍的是最重要的一类完整性约束。上面介绍的值的约束和结构值的约束和结构的约束均属于静

39、态约束的约束均属于静态约束。l动态约束动态约束 动态约束是指数据库从一种状态转变为另一种状态时(数动态约束是指数据库从一种状态转变为另一种状态时(数据库数据变动前后),新、旧值之间所应满足的约束条件,据库数据变动前后),新、旧值之间所应满足的约束条件,它是反映数据库状态变迁的约束。它是反映数据库状态变迁的约束。 例如,学生年龄在更改时只能增长,职工工资在调整例如,学生年龄在更改时只能增长,职工工资在调整时不得低于其原来的工资。时不得低于其原来的工资。BACK SQL Server 2000SQL Server 2000中数据完整性可分为四种类型:中数据完整性可分为四种类型:实体实体完整性、域完

40、整性、引用完整性、用户定义完整性完整性、域完整性、引用完整性、用户定义完整性。另。另外,触发器、存储过程等也能以一定方式控制数据完整外,触发器、存储过程等也能以一定方式控制数据完整性。性。 1 1、实体完整性实体完整性 实体完整性将行定义为特定表的唯一实体。实体完整性将行定义为特定表的唯一实体。SQL Server SQL Server 20002000支持如下实体完整性相关的约束:支持如下实体完整性相关的约束:(1) (1) PRIMARY KEYPRIMARY KEY约束约束:在一个表中不能有两行包含相同的:在一个表中不能有两行包含相同的主键值,不能在主键内的任何列中输入主键值,不能在主键

41、内的任何列中输入NULLNULL值。值。(2) (2) UNIQUE UNIQUE 约束约束:UNIQUE UNIQUE 约束在列集内强制执行值的唯一约束在列集内强制执行值的唯一性,对于性,对于UNIQUEUNIQUE约束中的列,表中不允许有两行包含相约束中的列,表中不允许有两行包含相同的非空值。同的非空值。BACK(3) (3) IDENTITYIDENTITY属性属性:IDENTITYIDENTITY属性能自动产生唯一标识属性能自动产生唯一标识值,指定为值,指定为IDENTITYIDENTITY的列一般作为主键。的列一般作为主键。2 2、域完整性域完整性:是指给定列的输入正确性与有效性。:

42、是指给定列的输入正确性与有效性。SQL SQL Server 2000Server 2000中强制域有效性的方法有:限制类型,如中强制域有效性的方法有:限制类型,如通过数据类型、用户自定义数据类型等实现;格式限通过数据类型、用户自定义数据类型等实现;格式限制,如通过制,如通过CHECKCHECK约束和规则等实现;列值的范围限定,约束和规则等实现;列值的范围限定,如通过如通过PRIMARY KEY PRIMARY KEY 约束、约束、UNIQUE UNIQUE 约束、约束、FOREIGN FOREIGN KEY KEY 约束、约束、CHECKCHECK约束、约束、DEFAULTDEFAULT定义

43、、定义、NOT NULLNOT NULL定义定义等实现。等实现。BACK3 3、引用完整性引用完整性( (即参照完整性即参照完整性) ) SQL Server 2000 SQL Server 2000引用完整性主要由引用完整性主要由FOREIGN KEYFOREIGN KEY约束体现,约束体现,它标识表之间的关系它标识表之间的关系, ,一个表的外键指向另一个表的候选键一个表的外键指向另一个表的候选键或唯一键。或唯一键。 强制引用完整性时,强制引用完整性时,SQL ServerSQL Server禁止用户进行下列操作:禁止用户进行下列操作: (1)(1) 当主表中没有关联的记录时,将记录添加到相

44、关表中。当主表中没有关联的记录时,将记录添加到相关表中。 (2)(2) 更改主表中的值并导致相关表中的记录孤立。更改主表中的值并导致相关表中的记录孤立。BACK(3)(3) 从主表中删除记录,但仍存在与该记录匹配的相关从主表中删除记录,但仍存在与该记录匹配的相关记录。记录。 在在DELETEDELETE或或UPDATEUPDATE所产生的所有级联引用操作的诸表所产生的所有级联引用操作的诸表中,每个表只能出现一次。多个级联操作中只要有一中,每个表只能出现一次。多个级联操作中只要有一个表因完整性原因操作失败,整个操纵将失败而回滚。个表因完整性原因操作失败,整个操纵将失败而回滚。4 4、用户定义完整

45、性用户定义完整性 SQL Server 2000SQL Server 2000用户定义完整性主要由用户定义完整性主要由CheckCheck约束所约束所定义的列级或表级约束体现,用户定义完整性还能由定义的列级或表级约束体现,用户定义完整性还能由规则、触发器、客户端或服务器端应用程序灵活定义。规则、触发器、客户端或服务器端应用程序灵活定义。BACK5 5、触发器触发器 SQL Server2000SQL Server2000触发器是一类特殊的存储过程,被触发器是一类特殊的存储过程,被定义为在对表或视图发出定义为在对表或视图发出UPDATEUPDATE、INSERT INSERT 或或 DELETE

46、DELETE语句时自动执行。触发器可以扩展语句时自动执行。触发器可以扩展SQL ServerSQL Server约束、约束、默认值和规则的完整性检查逻辑,一个表可以有多个默认值和规则的完整性检查逻辑,一个表可以有多个触发器。触发器。6 6、其它机制其它机制 SQL Server2000SQL Server2000支持存储过程中制定约束规则,支持存储过程中制定约束规则,SQL SQL Server2000Server2000的并发控制机制能保障多用户存取数据时的并发控制机制能保障多用户存取数据时的完整性。的完整性。BACKCREATE TRIGGER语句的语法格式如下:CREATE TRIGGE

47、RCREATE TRIGGER 触发器名触发器名 ONON 表名表名| |视图名视图名 FORFOR INSERT , UPDATE , DELETEINSERT , UPDATE , DELETEASAS sql sql语句语句创建创建UPDATE触发器触发器up_grade,当,当studentsdb数据库的数据库的grade表表中课程编号列数据被修改时,显示提示信息中课程编号列数据被修改时,显示提示信息“用户修改课程编号用户修改课程编号列列”。CREATE up_gradeON gradeFORAS IF UPDATE( 课程编号课程编号 ) BEGIN PRINT 用户修改课程编号列用

48、户修改课程编号列 ENDGOUPDATE grade SET 课程编号课程编号=0005 WHERE 学号学号=0005TRIGGERUPDATE在触发器的执行过程中,SQL Server建立和管理两个临时的虚拟表:Deleted表和Inserted表。这两个表包含了在激发触发器的操作中插入或删除的所有记录。在执行INSERT或UPDATE语句之后所有被添加或被更新的记录都会存储在Inserted表中。在执行DELETE或UPDATE语句时,从触发程序表中被删除的行会发送到Deleted表。对于更新操作,SQL Server先将要进行修改的记录存储到Deleted表中,然后再将修改后的数据复制

49、到Inserted表以及触发程序表。建立建立DELETE触发器触发器del_st_g,当,当studentsdb数据库的数据库的student_info表中的记录被删除时表中的记录被删除时,grade表中的所有相应记录能自表中的所有相应记录能自动删除。动删除。CREATE TRIGGER del_st_gON student_infoFOR DELETEAS BEGIN DELETE FROM grade WHERE 学号学号 IN (SELECT 学号学号 from deleted) ENDGODELETE FROM student_info WHERE 学号学号=0005CREATE TR

50、IGGER tr_up ON curriculumFOR UPDATEAS UPDATE grade SET 课程编号课程编号= (SELECT 课程编号课程编号 FROM inserted) WHERE 课程编号课程编号=(SELECT 课程编号课程编号 FROM deleted)GOUPDATE curriculum SET 课程编号课程编号=0012 WHERE 课程编号课程编号=0001在在curriculum表中建立表中建立UPDATE触发器触发器tr_up,如果更新,如果更新curriculum表中的课程编号,则相应更新表中的课程编号,则相应更新grade表的课程编号。表的课程编号

51、。进行进行UPDATE操作,将操作,将curriculum表中值为表中值为“0001”的课程编号的课程编号值修改为值修改为“0012”,查看相应的,查看相应的grade表的记录值是否改变。表的记录值是否改变。CREATE PROCEDURE CREATE PROCEDURE procedure_nameprocedure_nameASAS sql_statementsql_statement ,.n ,.n【例【例】创建一存储过程,要求该存储过程返回学生姓名、创建一存储过程,要求该存储过程返回学生姓名、所学课程和成绩。所学课程和成绩。CREATE PROCEDURECREATE PROCEDU

52、RE spStuCouTea_name spStuCouTea_nameAS AS SELECTSELECT 姓名姓名, ,课名课名, ,成绩成绩 FROMFROM 学生学生 xsxs INNER JOININNER JOIN 选课选课 xkxk ONON xs xs. .学号学号 = xk= xk. .学号学号 INNER JOININNER JOIN 课程课程 kckc ON ON xk xk. .课号课号 = kc= kc. .课号课号如要执行该存储过程,可在查询分析器中执行如下语句:如要执行该存储过程,可在查询分析器中执行如下语句:nEXECEXEC spStuCouTea_names

53、pStuCouTea_name存储过程和调用者之间通过参数交换数据,可以按输入的参存储过程和调用者之间通过参数交换数据,可以按输入的参数执行,也可由参数输出执行结果。调用者通过存储过程数执行,也可由参数输出执行结果。调用者通过存储过程返回的状态值对存储过程进行管理。返回的状态值对存储过程进行管理。1. 参数参数存储过程的参数在创建过程时声明。存储过程的参数在创建过程时声明。SQL Server支持两类参数:支持两类参数:输入参数和输出参数输入参数和输出参数。l输入参数允许调用程序为存储过程传送数据值。输入参数允许调用程序为存储过程传送数据值。要定义存储过程的输入参数,必须在要定义存储过程的输入

54、参数,必须在CREATE PROCEDURE语句中声明一个或多个变量及语句中声明一个或多个变量及类型。类型。【例【例】建立一个存储过程,根据所给学生的姓名查询该学建立一个存储过程,根据所给学生的姓名查询该学生的信息。生的信息。CREATE PROC xs_proc xm varchar(8)AS SELECT * from student_info WHERE 姓名姓名 = xmGOEXEC xs_proc 李明李明创建和执行带参数的存储过程创建和执行带参数的存储过程proc_list,查询,查询studentsdb数据库数据库的的grade表中输入课程编号的成绩排名前表中输入课程编号的成绩排

55、名前3位的学生的成绩信息。位的学生的成绩信息。执行该存储过程,查询课程编号为执行该存储过程,查询课程编号为0001的成绩排名前的成绩排名前3位学生。位学生。CREATE PROCEDURE proc_list kcbh char(4)AS SELECT TOP 3 学号学号,分数分数 FROM grade WHERE 课程编号课程编号=kcbh ORDER BY 分数分数 DESCGOEXEC proc_list 0001l输出参数允许存储过程将数据值或游标变量传输出参数允许存储过程将数据值或游标变量传回调用程序。回调用程序。lOUTPUT关键字用以指出能返回到调用它的批关键字用以指出能返回到

56、调用它的批处理或过程中的参数。为了使用输出参数,在处理或过程中的参数。为了使用输出参数,在CREATE PROCEDURE和和EXECUTE语句中语句中都必须使用都必须使用OUTPUT关键字。关键字。【例】创建一个实现加法计算并将运算结果作为输出参数的存储过程。CREATE PROCEDURE spAddValue1 INT,Value2 INT,ResultValue INT OUTPUTASSELECT ResultValue = Value1 + Value2GODECLARE result intEXEC spAdd 100,20,result OUTPUTSELECT result创

57、建和执行带输入和输出参数的存储过程创建和执行带输入和输出参数的存储过程proc_avg,查询,查询studentsdb数据库的数据库的grade表中输入课程编号的最高分、最低分、平均分。表中输入课程编号的最高分、最低分、平均分。执行该存储过程,查询课程编号为执行该存储过程,查询课程编号为0002的学生的最高分、最低分和的学生的最高分、最低分和平均分。平均分。CREATE PROC proc_avgkcbh char(4),max_fs float OUTPUT,min_fs float OUTPUT,avg_fs float OUTPUTAS SELECT max_fs=MAX(分数分数),m

58、in_fs=MIN(分数分数),avg_fs=AVG(分数分数) FROM grade WHERE 课程编号课程编号=kcbhGODECLARE max float,min float,avg floatEXEC proc_avg 0002,max OUTPUT,min OUTPUT,avg OUTPUTSELECT max AS 最高分最高分,min AS 最低分最低分,avg AS 平均分平均分5.3.1 数据库并发性概述5.3.2 事务的基本概念5.3.3 并发操作与数据的不一致性5.3.4 封锁及其产生问题的解决5.3.5 SQL Server 2000的并发控制机制返回本章首页l每个

59、用户在存取数据库中的数据时,可能是串行执行,每个用户在存取数据库中的数据时,可能是串行执行,即每个时刻只有一个用户程序运行,也可能是多个用即每个时刻只有一个用户程序运行,也可能是多个用户并行地存取数据库。户并行地存取数据库。l数据库的最大特点之一就是数据资源是共享的,串行数据库的最大特点之一就是数据资源是共享的,串行执行意味着一个用户在运行程序时,其他用户程序必执行意味着一个用户在运行程序时,其他用户程序必须等到这个用户程序结束才能对数据库进行存取,这须等到这个用户程序结束才能对数据库进行存取,这样数据库系统的利用率会极低。样数据库系统的利用率会极低。l数据库的并发控制机制能解决这类问题,以保

60、持数据数据库的并发控制机制能解决这类问题,以保持数据库中数据在多用户并发操作时的一致性、正确性。库中数据在多用户并发操作时的一致性、正确性。BACK1 1、事务(事务(TransactionTransaction)的定义)的定义 事务是数据库系统中执行的一个工作单位,它是由用事务是数据库系统中执行的一个工作单位,它是由用户定义的一组操作序列组成。户定义的一组操作序列组成。 一个事务可以是一组一个事务可以是一组SQLSQL语句、一条语句、一条SQLSQL语句或整个程语句或整个程序,一个应用程序可以包括多个事务。事务的开始与序,一个应用程序可以包括多个事务。事务的开始与结束可以由用户显式控制。如果

温馨提示

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

最新文档

评论

0/150

提交评论