资源描述
返回返回1第第1616讲讲 数据库保护数据库保护 教学目标:使学生教学目标:使学生了解和了解和掌握掌握数据库的安全和数据库的安全和完整控制的重要性和和可行性完整控制的重要性和和可行性 教学内容:教学内容:安全性控制的一般方法、完整性约安全性控制的一般方法、完整性约束条件和控制机制束条件和控制机制 教学重点:教学重点:存取控制存取控制 动态完整性约束动态完整性约束 参照完参照完整性条件整性条件 教学难点:教学难点:动态完整性约束动态完整性约束 参照完整性条件参照完整性条件 教学方法:多媒体演示教学方法:多媒体演示 举例法举例法 教学时间:教学时间:2 2学时学时 教学过程:教学过程:返回返回2 随着社会信息化的不断深化,各种数据库的使用也越来越广泛。随着社会信息化的不断深化,各种数据库的使用也越来越广泛。例如,一个企业管理信息系统的全部数据、国家机构的事务管理信息、例如,一个企业管理信息系统的全部数据、国家机构的事务管理信息、国防情报机密信息、基于国防情报机密信息、基于WEBWEB动态发布的网上购物信息等等,它们都动态发布的网上购物信息等等,它们都集中或分布地存放在大大小小的数据库中。我们知道数据库系统中的集中或分布地存放在大大小小的数据库中。我们知道数据库系统中的数据是由数据是由DBMSDBMS统一进行管理和控制的。为了适应和满足数据共享的环统一进行管理和控制的。为了适应和满足数据共享的环境和要求,境和要求,DBMSDBMS要保证数据库及整个系统的正常运转,防止数据意外要保证数据库及整个系统的正常运转,防止数据意外丢失和不一致数据的产生,以及当数据库遭受破坏后能迅速地恢复正丢失和不一致数据的产生,以及当数据库遭受破坏后能迅速地恢复正常,这就是数据库的安全保护。常,这就是数据库的安全保护。 DBMSDBMS对数据库的安全保护功能是通过四方面来实现的,即安全性控对数据库的安全保护功能是通过四方面来实现的,即安全性控制、完整性控制、并发性控制和数据库恢复。制、完整性控制、并发性控制和数据库恢复。返回返回3 数据库的安全性是指保护数据库,以防止非法使用所造成数据数据库的安全性是指保护数据库,以防止非法使用所造成数据的泄露、更改或破坏。的泄露、更改或破坏。 安全性问题有许多方面,其中包括:安全性问题有许多方面,其中包括:(1 1)法律、社会和伦理方面,例如请求查询信息的人是不有合法的权)法律、社会和伦理方面,例如请求查询信息的人是不有合法的权力;力;(2 2)物理控制方面,例如计算机机房或终端是否应该加锁或用其他方)物理控制方面,例如计算机机房或终端是否应该加锁或用其他方法加以保护;法加以保护;(3 3)政策方面,确定存取原则,允许哪些用户存取哪些数据;)政策方面,确定存取原则,允许哪些用户存取哪些数据;(4 4)运行与技术方面,使用口令时,如何使口令保持秘密;)运行与技术方面,使用口令时,如何使口令保持秘密;返回返回4(5 5)硬件控制方面,)硬件控制方面,CPUCPU是否提供任何安全性方面的功能,诸如存是否提供任何安全性方面的功能,诸如存储保护键或特权工作方式;储保护键或特权工作方式;(6 6)操作系统安全性方面,在主存储器和数据文件用过以后,操作)操作系统安全性方面,在主存储器和数据文件用过以后,操作系统是否把它们的内容清除掉;系统是否把它们的内容清除掉;(7 7)数据库系统本身安全性方面。)数据库系统本身安全性方面。返回返回516.1.2 16.1.2 安全性控制的一般方法安全性控制的一般方法 安全性控制是指要尽可能地杜绝所有可能的数据库非法访问安全性控制是指要尽可能地杜绝所有可能的数据库非法访问。用户非法使用数据库可以有很多种情况。例如,编写合法的程。用户非法使用数据库可以有很多种情况。例如,编写合法的程序绕过序绕过DBMSDBMS授权机制,通过操作系统直接存取、修改或备份有关授权机制,通过操作系统直接存取、修改或备份有关数据。用户访问非法数据,无论它们是有意的还是无意的数据。用户访问非法数据,无论它们是有意的还是无意的, ,都应都应该加以严格控制,因此,系统还要考虑数据信息的流动问题并加该加以严格控制,因此,系统还要考虑数据信息的流动问题并加以控制,否则有潜在的危险性。因为数据的流动可能使无权访问以控制,否则有潜在的危险性。因为数据的流动可能使无权访问的用户获得访问权利。的用户获得访问权利。返回返回6 例如,甲用户可以访问表例如,甲用户可以访问表T1T1,但无权访问表,但无权访问表T2T2,如,如果乙用户把表果乙用户把表T2T2的所有记录添加到表的所有记录添加到表T1T1中之后,则由中之后,则由于乙用户的操作,使甲用户获得了对表于乙用户的操作,使甲用户获得了对表T2T2中记录的访中记录的访问。此外,用户可以多次利用允许的访问结果,经过问。此外,用户可以多次利用允许的访问结果,经过逻辑推理得到他无权访问的数据。逻辑推理得到他无权访问的数据。 为防止这一点,访问的许可权还要结合过去访问为防止这一点,访问的许可权还要结合过去访问的情况而定。可见安全性的实施是要花费一定代价,的情况而定。可见安全性的实施是要花费一定代价,并需缜密考虑的。安全保护策略就是要以最小的代价并需缜密考虑的。安全保护策略就是要以最小的代价来最大程度防止对数据的非法访问,通常需要层层设来最大程度防止对数据的非法访问,通常需要层层设置安全措施。置安全措施。 实际上,数据库系统的安全性问题,类似于整个实际上,数据库系统的安全性问题,类似于整个计算机系统一级级层层设置安全的情况,其安全控制计算机系统一级级层层设置安全的情况,其安全控制模型一般如图模型一般如图16.116.1所示。所示。16.1.2 16.1.2 安全性控制的一般方法安全性控制的一般方法返回返回716.1.2 16.1.2 安全性控制的一般方法安全性控制的一般方法 DBMS 用户 DB OS 用户标识和鉴定 用户存取权限控制 操作系统安全保护 密码存储 根据图16.1的安全模型,当用户进入计算机系统时,系统首先根据输入的用户标识进行身份的鉴定,只有合法的用户才准许进入系统。 对已进入系统的用户,DBMS还要进行存取控制,只允许用户进行合法的操作返回返回8 DBMS DBMS是建立在操作系统之上的,安全的操作系统是建立在操作系统之上的,安全的操作系统是数据库安全的前提。操作系统应能保证数据库中的是数据库安全的前提。操作系统应能保证数据库中的数据必须由数据必须由DBMSDBMS访问,而不允许用户越过访问,而不允许用户越过DBMSDBMS,直接,直接通过操作系统或其它方式访问。通过操作系统或其它方式访问。 数据最后可以通过密码的形式存储到数据库中。数据最后可以通过密码的形式存储到数据库中。能做到非法者即使得到了加密数据,也无法识别它的能做到非法者即使得到了加密数据,也无法识别它的安全效果。安全效果。 下面,本书就同数据库有关的用户标识和鉴定、下面,本书就同数据库有关的用户标识和鉴定、存取控制、定义视图、数据加密和审计等几类安全性存取控制、定义视图、数据加密和审计等几类安全性措施作一讨论。措施作一讨论。16.1.2 16.1.2 安全性控制的一般方法安全性控制的一般方法返回返回91 1、用户标识和鉴别、用户标识和鉴别 用户标识和鉴定是系统提供的最外层的安全保护措用户标识和鉴定是系统提供的最外层的安全保护措施,其方法是由系统提供一定的方式让用户标识自己施,其方法是由系统提供一定的方式让用户标识自己的名字或身份,系统内部记录着所有合法用户的标识,的名字或身份,系统内部记录着所有合法用户的标识,每次用户要求进入系统时,由系统进行核实,通过鉴每次用户要求进入系统时,由系统进行核实,通过鉴定后才提供机器的使用权。定后才提供机器的使用权。 用户标识和鉴定的方法有用户标识和鉴定的方法有 : : (1) (1)单用户名鉴别法单用户名鉴别法 : :用一个用户名或用户标识符来标用一个用户名或用户标识符来标明用户的身份,系统以此来鉴别用户的合法性明用户的身份,系统以此来鉴别用户的合法性 . .16.1.2 16.1.2 安全性控制的一般方法安全性控制的一般方法返回返回1016.1.2 16.1.2 安全性控制的一般方法安全性控制的一般方法(2)(2)用户名与口令联合鉴别法用户名与口令联合鉴别法 : :用户标识符是用户公开的用户标识符是用户公开的标识,它不足以成为鉴别用户身份的凭证。标识,它不足以成为鉴别用户身份的凭证。 (3)(3)透明公式鉴别法透明公式鉴别法: :每个用户都预先约定好一个过程或每个用户都预先约定好一个过程或者函数,鉴别用户身份时,系统提供一个随机数,用者函数,鉴别用户身份时,系统提供一个随机数,用户根据自己预先约定的计算过程或者函数进行计算,户根据自己预先约定的计算过程或者函数进行计算,系统根据计算结果辨别用户身份的合法性。系统根据计算结果辨别用户身份的合法性。返回返回112、用户存取权限控制、用户存取权限控制 用户存取权限指的是不同的用户对于不同的数据对象用户存取权限指的是不同的用户对于不同的数据对象允许执行的操作权限。允许执行的操作权限。 存取权限由两个要素组成,数据对象和操作类型。定存取权限由两个要素组成,数据对象和操作类型。定义一个用户的存取权限就是要定义这个用户可以在哪些数据义一个用户的存取权限就是要定义这个用户可以在哪些数据对象上进行哪些类型的操作。对象上进行哪些类型的操作。 在数据库系统中,定义用户存取权限称为授权在数据库系统中,定义用户存取权限称为授权. . 授权有两种:授权有两种: (1)(1)系统权限系统权限: :由由DBADBA授予某些数据库用户,只有得到授予某些数据库用户,只有得到系统权限,才能成为数据库用户系统权限,才能成为数据库用户 . . 返回返回1216.1.2 16.1.2 安全性控制的一般方法安全性控制的一般方法 (2) (2)对象权限对象权限 : :可以由可以由DBADBA授予,也可以由数据对授予,也可以由数据对象的创建者授予,使数据库用户具有对某些数据对象进象的创建者授予,使数据库用户具有对某些数据对象进行某些操作的权限行某些操作的权限. . 这些授权定义经过编译后以一张授权表的形式存这些授权定义经过编译后以一张授权表的形式存放在数据字典中。授权表主要有三个属性,用户标识、放在数据字典中。授权表主要有三个属性,用户标识、数据对象和操作类型数据对象和操作类型。 返回返回1316.1.2 16.1.2 安全性控制的一般方法安全性控制的一般方法 3 3、视图机制、视图机制 为不同的用户定义不同的视图,可以限制各个用户为不同的用户定义不同的视图,可以限制各个用户的访问范围。通过视图机制把要保密的数据对无权存的访问范围。通过视图机制把要保密的数据对无权存取这些数据的用户隐藏起来,从而自动地对数据提供取这些数据的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。一定程度的安全保护。 4 4、数据加密、数据加密 数据加密是防止数据库中数据在存储和传输中失数据加密是防止数据库中数据在存储和传输中失密的有效手段密的有效手段. .加密的基本思想是根据一定的算法将原加密的基本思想是根据一定的算法将原始数据加密成为不可直接识别的格式始数据加密成为不可直接识别的格式, ,数据以密码的形数据以密码的形式存储和传输式存储和传输 . . 返回返回1416.1.2 16.1.2 安全性控制的一般方法安全性控制的一般方法 加密方法有两种加密方法有两种: : (1) (1)替换方法替换方法: :该方法使用密钥将明文中的每一个字符该方法使用密钥将明文中的每一个字符转换为密文中的一个字符转换为密文中的一个字符. . (2) (2)转换方法转换方法: :该方法将明文中的字符按不同的顺序重该方法将明文中的字符按不同的顺序重新排列新排列. . 用密码存储数据,在存入时需加密,在查询时需解密用密码存储数据,在存入时需加密,在查询时需解密, ,这个过程会占用较多的系统资源,降低了数据库的性能。这个过程会占用较多的系统资源,降低了数据库的性能。 5 5、审计、审计 实际上任何系统的安全性措施都不是绝对可靠的,窃实际上任何系统的安全性措施都不是绝对可靠的,窃密者总有办法打破这些控制密者总有办法打破这些控制. .审计功能是一种监视措施,审计功能是一种监视措施,跟踪记录有关数据的访问活动跟踪记录有关数据的访问活动. . 返回返回1516.1.3 16.1.3 安全性控制的其它方法安全性控制的其它方法 1、强制存取控制、强制存取控制(MAC) ) 有些数据库系统的数据要求很高的保密性,通常具有有些数据库系统的数据要求很高的保密性,通常具有静态的严格的分层结构,强制存取控制能实现这种高保密静态的严格的分层结构,强制存取控制能实现这种高保密性要求性要求. .这种方法的基本思想在于每个数据对象(文件、这种方法的基本思想在于每个数据对象(文件、记录记录或宇段等记录记录或宇段等) )赋予一定的密级,级别从高到低有:赋予一定的密级,级别从高到低有:绝密级、机密级、秘密级和公用级绝密级、机密级、秘密级和公用级. .每个用户也具有相应每个用户也具有相应的级别,称为许可证级别的级别,称为许可证级别. . 在系统运行时,采用如下两条简单规则:在系统运行时,采用如下两条简单规则: (1)(1)用户用户U U只能查看比它级别低或同级的数据只能查看比它级别低或同级的数据. . (2) (2)用户用户U U只能修改和它同级的数据只能修改和它同级的数据. . 强制存取控制是一种独立于值的控制方法强制存取控制是一种独立于值的控制方法. .它的优点是它的优点是系统能执行系统能执行“信息流控制信息流控制”. . 返回返回162、统计数据库的安全性、统计数据库的安全性 查询仅仅是某些记录的统计值,例如求记录数、和、查询仅仅是某些记录的统计值,例如求记录数、和、平均值等。在统计数据库中,虽然不允许用户查询单平均值等。在统计数据库中,虽然不允许用户查询单个记录的信息,但是用户可以通过处理足够多的汇总个记录的信息,但是用户可以通过处理足够多的汇总信息来分析出单个记录的信息信息来分析出单个记录的信息. . 在统计数据库中,对查询应作下列限制:在统计数据库中,对查询应作下列限制: 一个查询查到的记录个数至少是一个查询查到的记录个数至少是n; 两个查询查到的记录的两个查询查到的记录的“交交”数目至多是数目至多是m. . 保证数据库安全性的另一个方法是保证数据库安全性的另一个方法是“数据污染数据污染”,也就是在回答查询时,提供一些偏离正确值的数据,也就是在回答查询时,提供一些偏离正确值的数据,以免数据泄露以免数据泄露. . 返回返回1716.1.4 SQL Server 200016.1.4 SQL Server 2000安全性概述安全性概述 SQL Server 2000 SQL Server 2000安全系统的构架建立在用户和用安全系统的构架建立在用户和用户组的基础上户组的基础上 .SQL Server.SQL Server提供了提供了3 3种安全管理模式,种安全管理模式,即标准模式、集成模式和混合模式,数据库设计者和即标准模式、集成模式和混合模式,数据库设计者和数据库管理员可以根据实际情况进行选择数据库管理员可以根据实际情况进行选择 . . 1 1、两个安全性阶段、两个安全性阶段 : :身份验证和授权身份验证和授权 . . 2 2、用户权限、用户权限 : :登录创建在登录创建在WindowsWindows中,而非中,而非 SQL SQL ServerServer中中. . 返回返回1816.1.4 SQL16.1.4 SQL ServerServer 20002000安全性概述安全性概述 当用户连接到当用户连接到SQL Server 2000SQL Server 2000实例后,他们可以执行的活动实例后,他们可以执行的活动由授予以下帐户的权限确定:由授予以下帐户的权限确定: (1 1)用户的安全帐户;)用户的安全帐户; (2 2)用户的安全帐户所属)用户的安全帐户所属WindowsWindows组或角色层次结;组或角色层次结; (3 3)用户若要进行任何涉及更改数据库定义或访问数据的活动,)用户若要进行任何涉及更改数据库定义或访问数据的活动,则必须有相应的权限则必须有相应的权限. .返回返回1916.1.4 16.1.4 SQL Server 2000SQL Server 2000安全性概述安全性概述 3、视图安全机制、视图安全机制 SQL Server 2000通过限制可由用户使用的数据,可以将视图通过限制可由用户使用的数据,可以将视图作为安全机制。用户可以访问某些数据,进行查询和修改,但是作为安全机制。用户可以访问某些数据,进行查询和修改,但是表或数据库的其余部分是不可见的,也不能进行访问。表或数据库的其余部分是不可见的,也不能进行访问。 4、加密方法、加密方法 SQL Server 2000支持加密或可以加密的内容为:支持加密或可以加密的内容为:SQL Server 中存储的登录和应用程序角色密码;中存储的登录和应用程序角色密码;作为网络数据包而在客户作为网络数据包而在客户端和服务器端之间发送的数据;端和服务器端之间发送的数据;SQL Server 2000中如下对象的中如下对象的定义内容:存储过程、用户定义函数、视图、触发器、默认值、定义内容:存储过程、用户定义函数、视图、触发器、默认值、规则等。规则等。 返回返回2016.1.4 16.1.4 SQL Server 2000SQL Server 2000安全性概述安全性概述 5 5、审核活动、审核活动 SQL Server 2000SQL Server 2000提供审核功能,用以跟踪和记录每个提供审核功能,用以跟踪和记录每个 SQL SQL Server Server 实例上已发生的活动(如成功和失败的记录)。实例上已发生的活动(如成功和失败的记录)。SQL SQL Server 2000 Server 2000 还提供管理审核记录的接口,即还提供管理审核记录的接口,即 SQL SQL 事件探查器。事件探查器。只有只有 sysadminsysadmin 固定安全角色的成员才能启用或修改审核,而且固定安全角色的成员才能启用或修改审核,而且审核的每次修改都是可审核的事件。审核的每次修改都是可审核的事件。返回返回2116.2.1 16.2.1 数据库完整性概述数据库完整性概述 数据库的完整性是指保护数据库中数据的正确性、有效性和相容性,数据库的完整性是指保护数据库中数据的正确性、有效性和相容性,防止错误的数据进入数据库造成无效操作。防止错误的数据进入数据库造成无效操作。 显然,维护数据库的完整性非常重要,数据库中的数据是否具备完整显然,维护数据库的完整性非常重要,数据库中的数据是否具备完整性关系到数据能否真实地反映现实世界。性关系到数据能否真实地反映现实世界。 数据库的完整性和安全性是数据库保护的两个不同的方面。数据库的完整性和安全性是数据库保护的两个不同的方面。 安全性是保护数据库,以防止非法使用所造成数据的泄露、更改或破安全性是保护数据库,以防止非法使用所造成数据的泄露、更改或破坏,安全性措施的防范对象是非法用户和非法操作;完整性是防止合法用坏,安全性措施的防范对象是非法用户和非法操作;完整性是防止合法用户使用数据库时向数据库中加入不符合语义的数据,完整性措施的防范对户使用数据库时向数据库中加入不符合语义的数据,完整性措施的防范对象是不合语义的数据。象是不合语义的数据。 返回返回2216.2.2 16.2.2 完整性规则的组成完整性规则的组成 完整性规则主要由以下三部分构成:完整性规则主要由以下三部分构成: (1 1)触发条件:规定系统什么时候使用规则检查数据;)触发条件:规定系统什么时候使用规则检查数据; (2 2)约束条件:规定系统检查用户发出的操作请求违背了什么样)约束条件:规定系统检查用户发出的操作请求违背了什么样的完整性约束条件;的完整性约束条件; (3 3)违约响应:规定系统如果发现用户的操作请求违背了完整性)违约响应:规定系统如果发现用户的操作请求违背了完整性约束条件,应该采取一定的动作来保证数据的完整性,即违约时约束条件,应该采取一定的动作来保证数据的完整性,即违约时要做的事情。要做的事情。 完整性规则从执行时间上可分为立即执行约束(完整性规则从执行时间上可分为立即执行约束(Immediate Immediate ConstraintsConstraints)和延迟执行约束()和延迟执行约束(Deferred ConstraintsDeferred Constraints)。)。 立即执行约束是指在执行用户事务过程中,某一条语句执行立即执行约束是指在执行用户事务过程中,某一条语句执行完成后,系统立即对此数据进行完整性约束条件检查;延迟执行完成后,系统立即对此数据进行完整性约束条件检查;延迟执行约束是指在整个事务执行结束后,再对约束条件进行完整性检查,约束是指在整个事务执行结束后,再对约束条件进行完整性检查,结果正确后才能提交。结果正确后才能提交。 返回返回2316.2.2 16.2.2 完整性规则的组成完整性规则的组成 一条完整性规则可以用一个五元组(一条完整性规则可以用一个五元组(D,O,A,C,P)来形式化地)来形式化地表示。其中:表示。其中: D(data):代表约束作用的数据对象;):代表约束作用的数据对象; O(operation):代表触发完整性检查的数据库操作,即当用户发):代表触发完整性检查的数据库操作,即当用户发出什么操作请求时需要检查该完整性规则;出什么操作请求时需要检查该完整性规则; A(assertion):代表数据对象必须满足的语义约束,这是规则的主):代表数据对象必须满足的语义约束,这是规则的主体;体; C(condition):代表选择):代表选择A作用的数据对象值的谓词;作用的数据对象值的谓词; P(procedure):代表违反完整性规则时触发执行的操作过程。):代表违反完整性规则时触发执行的操作过程。 返回返回2416.2.2 16.2.2 完整性规则的组成完整性规则的组成例如,对于例如,对于“学号不能为空学号不能为空”的这条完整性约束,的这条完整性约束,D:代表约束作用的数据对象为:代表约束作用的数据对象为SNO属性;属性;O(operation):当用户插入或修改数据时需要检查该完整性规则;):当用户插入或修改数据时需要检查该完整性规则;A(assertion):):SNO不能为空;不能为空;C(condition):):A可作用于所有记录的可作用于所有记录的SNO属性;属性;P(procedure):拒绝执行用户请求。):拒绝执行用户请求。返回返回2516.2.3 16.2.3 完整性约束条件的分类完整性约束条件的分类 在数据库领域中,有四种最常用的数据模型,它们是:被称为非在数据库领域中,有四种最常用的数据模型,它们是:被称为非关系模型的层次模型、网状模型、关系模型和面向对象模型。本关系模型的层次模型、网状模型、关系模型和面向对象模型。本章简要介绍层次模型、网状模型、关系模型。章简要介绍层次模型、网状模型、关系模型。 层次模型是数据库系统中最早出现的数据模型,它用树形结构表层次模型是数据库系统中最早出现的数据模型,它用树形结构表示各类实体以及实体间的联系。层次模型数据库系统的典型代表示各类实体以及实体间的联系。层次模型数据库系统的典型代表是是IBMIBM公司的公司的IMSIMS(Information Management SystemsInformation Management Systems)数据库管)数据库管理系统,这是一个曾经广泛使用的数据库管理系统。现实世界中理系统,这是一个曾经广泛使用的数据库管理系统。现实世界中有一些的实体之间的联系本来就呈现出一种很自然的层次关系,有一些的实体之间的联系本来就呈现出一种很自然的层次关系,如家庭关系,行政关系。如家庭关系,行政关系。返回返回2616.2.3 16.2.3 完整性约束条件的分类完整性约束条件的分类 1、值的约束和结构的约束 从约束条件使用的对象来分,可把约束分为值的约束和结构的约束。从约束条件使用的对象来分,可把约束分为值的约束和结构的约束。 值的约束:即对数据类型、数据格式、取值范围等进行规定。值的约束:即对数据类型、数据格式、取值范围等进行规定。(1 1)对数据类型的约束,包括数据的类型、长度、单位和精度等。例)对数据类型的约束,包括数据的类型、长度、单位和精度等。例如,规定学生性别的数据类型应为字符型,长度为如,规定学生性别的数据类型应为字符型,长度为2 2。(2 2)对数据格式的约束。例如,规定出生日期的数据格式为)对数据格式的约束。例如,规定出生日期的数据格式为YYYY.MM.DDYYYY.MM.DD。(3 3)对取值范围的约束。例如,月份的取值范围为)对取值范围的约束。例如,月份的取值范围为1 11212,日期,日期1 13131。返回返回2716.2.3 16.2.3 完整性约束条件的分类完整性约束条件的分类(4 4)对空值的约束。空值表示未定义或未知的值,它与零值和空格)对空值的约束。空值表示未定义或未知的值,它与零值和空格不同。有的列值允许空值,有的则不允许。例如,学号和课程号不同。有的列值允许空值,有的则不允许。例如,学号和课程号不可以为空值,但成绩可以为空值。不可以为空值,但成绩可以为空值。 结构约束:即对数据之间联系的约束。结构约束:即对数据之间联系的约束。 数据库中同一关系的不同属性之间,应满足一定的约束条件,数据库中同一关系的不同属性之间,应满足一定的约束条件,同时,不同关系的属性之间也有联系,也应满足一定的约束条件。同时,不同关系的属性之间也有联系,也应满足一定的约束条件。返回返回2816.2.3 16.2.3 完整性约束条件的分类完整性约束条件的分类常见的结构约束有如下四种:常见的结构约束有如下四种:(1)函数依赖约束:说明了同一关系中不同属性之间应满足的约束)函数依赖约束:说明了同一关系中不同属性之间应满足的约束条件。如:条件。如:2NF,3NF,BCNF这些不同的范式应满足不同的约束这些不同的范式应满足不同的约束条件。大部分函数依赖约束都是隐含在关系模式结构中的,特别条件。大部分函数依赖约束都是隐含在关系模式结构中的,特别是对于规范化程度较高的关系模式,都是由模式来保持函数依赖是对于规范化程度较高的关系模式,都是由模式来保持函数依赖的。的。(2)实体完整性约束:说明了关系主键(或主码)的属性列必须唯)实体完整性约束:说明了关系主键(或主码)的属性列必须唯一,其值不能为全空或部分为空。一,其值不能为全空或部分为空。(3)参照完整性约束:说明了不同关系的属性之间的约束条件,即)参照完整性约束:说明了不同关系的属性之间的约束条件,即外部键(外码)的值应能够在被参照关系的主键值中找到或取空外部键(外码)的值应能够在被参照关系的主键值中找到或取空值。值。返回返回2916.2.3 16.2.3 完整性约束条件的分类完整性约束条件的分类(4)用户自定义完整性:从实际应用系统出发,按需定)用户自定义完整性:从实际应用系统出发,按需定 义属性之间要满足的约束条件。义属性之间要满足的约束条件。(5)统计约束,规定某个属性值与关系多个元组的统计)统计约束,规定某个属性值与关系多个元组的统计值之间必须满足某种约束条件。例如,规定系主任的值之间必须满足某种约束条件。例如,规定系主任的奖金不得高于该系的平均奖金的奖金不得高于该系的平均奖金的50%,不得低于该系,不得低于该系的平均奖金的的平均奖金的15%。这里该系平均奖金的值就是一个。这里该系平均奖金的值就是一个统计计算值。统计计算值。 其中,实体完整性约束和参照完整性约束是关系其中,实体完整性约束和参照完整性约束是关系模型的两个极其重要的约束,被称为关系的两个不变模型的两个极其重要的约束,被称为关系的两个不变性。而统计约束实现起来开销很大。性。而统计约束实现起来开销很大。返回返回3016.2.3 16.2.3 完整性约束条件的分类完整性约束条件的分类2、静态约束和动态约束完整性约束从约束对象的状态可分为静态约束和动态约束。完整性约束从约束对象的状态可分为静态约束和动态约束。 静态约束静态约束 静态约束是指在数据库每一个确定状态时的数据对象所应满足的约束静态约束是指在数据库每一个确定状态时的数据对象所应满足的约束条件,它是反映数据库状态合理性的约束,这是最重要的一类完整性约条件,它是反映数据库状态合理性的约束,这是最重要的一类完整性约束。上面介绍的值的约束和结构的约束均属于静态约束。束。上面介绍的值的约束和结构的约束均属于静态约束。 动态约束动态约束 动态约束是指数据库从一种状态转变为另一种状态时(数据库数据变动态约束是指数据库从一种状态转变为另一种状态时(数据库数据变动前后),新、旧值之间所应满足的约束条件,它是反映数据库状态变动前后),新、旧值之间所应满足的约束条件,它是反映数据库状态变迁的约束。迁的约束。 例如,学生年龄在更改时只能增长,职工工资在调整时不得低于例如,学生年龄在更改时只能增长,职工工资在调整时不得低于其原来的工资。其原来的工资。返回返回3116.2.4 SQL Server 200016.2.4 SQL Server 2000完整性概述完整性概述 SQL Server 2000SQL Server 2000中数据完整性可分为四种类型:实体完整性、域完中数据完整性可分为四种类型:实体完整性、域完整性、引用完整性、用户定义完整性。另外,触发器、存储过程等整性、引用完整性、用户定义完整性。另外,触发器、存储过程等也能以一定方式控制数据完整性。也能以一定方式控制数据完整性。 1 1、实体完整性、实体完整性 实体完整性将行定义为特定表的唯一实体。实体完整性将行定义为特定表的唯一实体。SQL Server 2000SQL Server 2000支持如支持如下实体完整性相关的约束:下实体完整性相关的约束:(1) PRIMARY KEY(1) PRIMARY KEY约束:在一个表中不能有两行包含相同的主键值,不约束:在一个表中不能有两行包含相同的主键值,不能在主键内的任何列中输入能在主键内的任何列中输入NULLNULL值。值。(2) UNIQUE (2) UNIQUE 约束:约束:UNIQUE UNIQUE 约束在列集内强制执行值的唯一性,对于约束在列集内强制执行值的唯一性,对于UNIQUEUNIQUE约束中的列,表中不允许有两行包含相同的非空值。约束中的列,表中不允许有两行包含相同的非空值。返回返回32(3) IDENTITY(3) IDENTITY属性:属性:IDENTITYIDENTITY属性能自动产生唯一标识属性能自动产生唯一标识值,指定为值,指定为IDENTITYIDENTITY的列一般作为主键。的列一般作为主键。2、域完整性:是指给定列的输入正确性与有效性。、域完整性:是指给定列的输入正确性与有效性。SQL SQL Server 2000Server 2000中强制域有效性的方法有:限制类型,如中强制域有效性的方法有:限制类型,如通过数据类型、用户自定义数据类型等实现;格式限通过数据类型、用户自定义数据类型等实现;格式限制,如通过制,如通过CHECKCHECK约束和规则等实现;列值的范围限定,约束和规则等实现;列值的范围限定,如通过如通过PRIMARY KEY PRIMARY KEY 约束、约束、UNIQUE UNIQUE 约束、约束、FOREIGN FOREIGN KEY KEY 约束、约束、CHECKCHECK约束、约束、DEFAULTDEFAULT定义、定义、NOT NULLNOT NULL定义定义等实现。等实现。返回返回333 3、引用完整性、引用完整性( (即参照完整性即参照完整性) ) SQL Server 2000 SQL Server 2000引用完整性主要由引用完整性主要由FOREIGN KEYFOREIGN KEY约束约束体现,它标识表之间的关系体现,它标识表之间的关系, ,一个表的外键指向另一个一个表的外键指向另一个表的候选键或唯一键。表的候选键或唯一键。强制引用完整性时,强制引用完整性时,SQL ServerSQL Server禁止用户进行下列操作:禁止用户进行下列操作:(1) (1) 当主表中没有关联的记录时,将记录添加到相关表当主表中没有关联的记录时,将记录添加到相关表中。中。(2) (2) 更改主表中的值并导致相关表中的记录孤立。更改主表中的值并导致相关表中的记录孤立。返回返回34(3) (3) 从主表中删除记录,但仍存在与该记录匹配的相关从主表中删除记录,但仍存在与该记录匹配的相关记录。记录。 在在DELETEDELETE或或UPDATEUPDATE所产生的所有级联引用操作的诸所产生的所有级联引用操作的诸表中,每个表只能出现一次。多个级联操作中只要有表中,每个表只能出现一次。多个级联操作中只要有一个表因完整性原因操作失败,整个操纵将失败而回一个表因完整性原因操作失败,整个操纵将失败而回滚。滚。4 4、用户定义完整性、用户定义完整性 SQL Server 2000SQL Server 2000用户定义完整性主要由用户定义完整性主要由CheckCheck约束约束所定义的列级或表级约束体现,用户定义完整性还能所定义的列级或表级约束体现,用户定义完整性还能由规则、触发器、客户端或服务器端应用程序灵活定由规则、触发器、客户端或服务器端应用程序灵活定义。义。返回返回355 5、触发器、触发器 SQL Server2000SQL Server2000触发器是一类特殊的存储过程,被触发器是一类特殊的存储过程,被定义为在对表或视图发出定义为在对表或视图发出UPDATEUPDATE、INSERT INSERT 或或 DELETEDELETE语句时自动执行。触发器可以扩展语句时自动执行。触发器可以扩展SQL ServerSQL Server约束、约束、默认值和规则的完整性检查逻辑,一个表可以有多个默认值和规则的完整性检查逻辑,一个表可以有多个触发器。触发器。6 6、其它机制、其它机制 SQL Server2000SQL Server2000支持存储过程中制定约束规则,支持存储过程中制定约束规则,SQL SQL Server2000Server2000的并发控制机制能保障多用户存取数据时的并发控制机制能保障多用户存取数据时的完整性。的完整性。返回返回3616.3.1 16.3.1 数据库并发性概述数据库并发性概述 每个用户在存取数据库中的数据时,可能是串行执行,每个用户在存取数据库中的数据时,可能是串行执行,即每个时刻只有一个用户程序运行,也可能是多个用即每个时刻只有一个用户程序运行,也可能是多个用户并行地存取数据库。户并行地存取数据库。 数据库的最大特点之一就是数据资源是共享的,串行数据库的最大特点之一就是数据资源是共享的,串行执行意味着一个用户在运行程序时,其他用户程序必执行意味着一个用户在运行程序时,其他用户程序必须等到这个用户程序结束才能对数据库进行存取,这须等到这个用户程序结束才能对数据库进行存取,这样数据库系统的利用率会极低。样数据库系统的利用率会极低。 数据库的并发控制机制能解决这类问题,以保持数据数据库的并发控制机制能解决这类问题,以保持数据库中数据的在多用户并发操作时的一致性、正确性。库中数据的在多用户并发操作时的一致性、正确性。返回返回3716.3.2 16.3.2 事务的基本概念事务的基本概念 1 1、事务(、事务(TransactionTransaction)的定义)的定义 事务是数据库系统中执行的一个工作单位,它是事务是数据库系统中执行的一个工作单位,它是由用户定义的一组操作序列组成。由用户定义的一组操作序列组成。 一个事务可以是一组一个事务可以是一组SQLSQL语句、一条语句、一条SQLSQL语句或整语句或整个程序,一个应用程序可以包括多个事务。事务的开个程序,一个应用程序可以包括多个事务。事务的开始与结束可以由用户显式控制。如果用户没有显式地始与结束可以由用户显式控制。如果用户没有显式地定义事务,则由定义事务,则由DBMSDBMS按照缺省规定自动划分事务。按照缺省规定自动划分事务。返回返回3816.3.2 16.3.2 事务的基本概念事务的基本概念在在SQLSQL语言中,定义事务的语句有三条:语言中,定义事务的语句有三条:(1)BEGIN TRANSACTION(1)BEGIN TRANSACTION表示事务的开始;表示事务的开始;(2)COMMIT(2)COMMIT表示事务的提交,即将事务中所有对表示事务的提交,即将事务中所有对 数据库数据库的更新写回到磁盘上的物理数据库中去,此时事务正的更新写回到磁盘上的物理数据库中去,此时事务正常结束;常结束;(3)ROLLBACK(3)ROLLBACK表示事务的回滚,即在事务运行的过程中发表示事务的回滚,即在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的更新操作全部撤销,再回滚到数据库的所有已完成的更新操作全部撤销,再回滚到事务开始时的状态。事务开始时的状态。 返回返回3916.3.2 16.3.2 事务的基本概念事务的基本概念2、事务的特征 事务是由有限的数据库操作序列组成,但并不是任事务是由有限的数据库操作序列组成,但并不是任意的数据库操作序列都能成为事务,为了保护数据的完意的数据库操作序列都能成为事务,为了保护数据的完整性,一般要求事务具有以下四个特征:整性,一般要求事务具有以下四个特征: (1 1)原子性()原子性(AtomicAtomic):一个事务是一个不可分割的工):一个事务是一个不可分割的工作单位,事务在执行时,应该遵守作单位,事务在执行时,应该遵守“要么不做,要么全要么不做,要么全做做”(nothing or allnothing or all)的原则,即不允许事务部分的)的原则,即不允许事务部分的完成。即使因为故障而使事务未能完成,它执行的部分完成。即使因为故障而使事务未能完成,它执行的部分操作要被取消。操作要被取消。 (2 2)一致性()一致性(ConsistencyConsistency):事务对数据库的操作使数):事务对数据库的操作使数据库从一个一致状态转变到另一个一致状态。所谓数据据库从一个一致状态转变到另一个一致状态。所谓数据库的一致状态是指事务操作后数据库中的数据要满足各库的一致状态是指事务操作后数据库中的数据要满足各种完整性约束要求。种完整性约束要求。返回返回4016.3.216.3.2事务的基本概念事务的基本概念 例如,银行企业中,例如,银行企业中,“从帐号从帐号A A转移资金额转移资金额M M到帐号到帐号B”B”是一是一个典型的事务,这个事务包括两个操作,从帐号个典型的事务,这个事务包括两个操作,从帐号A A中减去资金额中减去资金额M M和在帐号和在帐号B B中增加资金额中增加资金额M M,如果只执行其中一个操作,则数据库,如果只执行其中一个操作,则数据库处于不一致状态,帐务会出现问题。也就是说,两个操作要么全处于不一致状态,帐务会出现问题。也就是说,两个操作要么全做,要么全不做,否则就不能成为事务。可见事务的一致性与原做,要么全不做,否则就不能成为事务。可见事务的一致性与原子性是密切相关的。子性是密切相关的。 3 3、隔离性(、隔离性(IsolationIsolation):如果多个事务并发地执行,应像各个事):如果多个事务并发地执行,应像各个事务独立执行一样,一个事务的执行不能被其他事务干扰。即一个务独立执行一样,一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的。并发事务内部的操作及使用的数据对并发的其他事务是隔离的。并发控制就是为了保证事务间的隔离性。控制就是为了保证事务间的隔离性。 返回返回4116.3.2 16.3.2 事务的基本概念事务的基本概念4 4、持久性(、持久性(DurabilityDurability):指一个事务一旦提交,它对):指一个事务一旦提交,它对 数据库中数据的改变就应该是持久的,即使数据库因数据库中数据的改变就应该是持久的,即使数据库因故障而受到破坏,故障而受到破坏,DBMSDBMS也应该能够恢复。也应该能够恢复。 事务上述四个性质的英文术语的第一个字母分别事务上述四个性质的英文术语的第一个字母分别为为A A、C C、I I、D D。因此,这四个性质也称为事务的。因此,这四个性质也称为事务的ACIDACID准则。准则。返回返回4216.3.2 16.3.2 事务的基本概念事务的基本概念BEGIN TRANSACTIONBEGIN TRANSACTIONREAD AREAD AAA-MAA-MIF A0 /IF A0 /* * A A 款不足款不足* */ /THENTHENBEGINBEGINDISPLAY “ADISPLAY “A款不足款不足”ROLLBACKROLLBACKENDENDELSE /ELSE /* * 拨款拨款 * */ /BEGINBEGINB BB+ MB+ MDISPLAY “DISPLAY “拨款完成拨款完成”COMMITCOMMITENDEND下面是一个事务的例子,从帐号下面是一个事务的例子,从帐号A A转移资金额转移资金额R R到帐号到帐号B B:返回返回43 这是对一个简单事务的完整的描述。该事务有两这是对一个简单事务的完整的描述。该事务有两个出口:当个出口:当A A 帐号的款项不足时,事务以帐号的款项不足时,事务以ROLLBACKROLLBACK(撤销)命令结束,即撤销该事务的影响;另一个出(撤销)命令结束,即撤销该事务的影响;另一个出口是以口是以COMMITCOMMIT(提交)命令结束,完成从帐号(提交)命令结束,完成从帐号A A到帐号到帐号B B的拨款。在的拨款。在COMMITCOMMIT之前,即在数据库修改过程中,数之前,即在数据库修改过程中,数据可能是不一致的,事务本身也可能被撤销。只有在据可能是不一致的,事务本身也可能被撤销。只有在COMMITCOMMIT之后,事务对数据库所产生的变化才对其他事之后,事务对数据库所产生的变化才对其他事务开放,这就可以避免其他事务访问不一致或不存在务开放,这就可以避免其他事务访问不一致或不存在的数据。的数据。
展开阅读全文