您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第6章 数据库的完整性和安全性
第6章数据库的完整性和安全性前言数据库的保护涉及多个方面内容,概括起来主要是保护后台数据库系统的完整和安全,使之具有随时可正常运行的功能,防止机密数据的泄漏。数据库的完整性和安全性是两个完全不同的概念。当然,完整性和安全性是密切相关的。6.1数据库的完整性数据库的完整性是指数据库中数据的正确性和相容性。例如,学生的学号必须唯一;性别只能是男或女;学生所在的专业必须是学校已开设的专业等。数据库是否具备完整性关系到数据库系统能否真实地反映现实世界,因此维护数据库的完整性是非常重要的。6.1.1数据库的完整性的基本功能及具体内容数据库完整性的具体内容包括:1.保护数据项之间的结构不受破坏;2.保护数据的正确性、有效性;3.同一数据的不同副本尽可能地一致、协调;4.提高数据对用户的可用性。6.1.2数据库的完整性分类实体完整性(EntityIntegrity)(1)实体完整性是针对基本数据表而言的。一个基本数据表通常对应现实世界的一个实体集。例如“学生基本情况表”对应于学生的集合。(2)现实世界中的实体是可区分的,即它们具有某种唯一性标识。(3)相应地,关系模型中以主键作为唯一标识。(4)主键中的属性即主属性不能取空值。所谓空值就是“不知道”或“无意义”的值。6.1.2数据库的完整性分类参照完整性(ReferentialIntegrity)在将关系型数据模型转换为关系型数据库后,数据表之间就存在着引用。示例:学生实体和专业实体可以用下面的关系表示,其中主键用下划线标识:学生关系(学号,姓名,性别,专业号,年龄)专业关系(专业号,专业名)在将关系型数据模型转换为关系型数据库后,数据表之间就存在着引用。6.1.2数据库的完整性分类由以上叙述可知,在示例中,学生关系的“专业号”属性与专业关系的主键“专业号”相对应,因此“专业号”属性是学生关系的外键。这里专业关系是被参照的关系,学生关系为参照关系。如图所示。专业号学生关系专业关系6.1.2数据库的完整性分类数据表内及数据表间的参照完整性同关系,下面简要说明一下参照完整性要考虑的几个问题:①外键能否接受空值问题②在被参照关系中删除记录的问题:级联删除(CASCADES)受限删除(RESTRICTED)置空值删除(NULLIFIES)6.1.2数据库的完整性分类③在参照数据表中插入记录时的问题:受限插入递归插入④修改数据表中主键的问题:不允许修改主键允许修改主键6.1.2数据库的完整性分类用户定义的完整性(User-definedIntegrity)任何关系数据库系统都应支持实体完整性和参照完整性。除此之外,不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件,用户定义的完整性就是针对某一具体关系数据库的约束条件。它反映某一具体应用所涉及的数据必须满足的语义要求。例如,某个属性必须取唯一值、某些属性值之间应满足一定的函数关系、某个属性的取值范围在0~100之间等等。6.1.3完整性的约束条件为维护数据库的完整性,DBMS必须提供一种机制来检查数据库中的数据,看其是否满足语义规定的条件。这些加在数据库数据之上的语义约束条件称为数据库完整性约束条件,它们与数据一起存入数据库中。完整性的约束条件可作以下分类:完整性约束条件作用的对象可以是数据表、记录、列三种。完整性约束条件涉及的这三类对象,其状态可以是静态的,也可以是动态的。6.1.3完整性的约束条件完整性约束条件分为六类,如下所示:1.静态列级约束:静态列级约束是对一个列的取值域的说明,这是最常用也是最容易实现的一类完整性约束,包括以下几方面:①对数据类型的约束②对数据格式的约束③对取值范围或取值集合的约束④对空值的约束⑤其他约束2.静态记录约束6.1.3完整性的约束条件3.静态数据表约束:在一个数据表的各个记录之间或者若干数据表之间常常存在各种联系或约束。常见的静态数据表约束有:1)实体完整性约束。2)参照完整性约束。实体完整性约束和参照完整性约束是关系模型的两个极其重要的约束,称为关系的两个不变性。3)函数依赖约束。大部分函数依赖约束都在关系模式中定义。4)统计约束。即字段值与数据表中多个记录的统计值之间的约束关系。6.1.3完整性的约束条件动态列级约束动态列级约束是修改列定义或列值时应满足的条件,包括下面两方面:①修改列定义时的约束例如,将允许空值的列改为不允许空值时,若该列目前已存在空值,则拒绝这种修改。②修改列值时的约束修改列值时需要参照其旧值,并且新旧值之间需要满足某种约束条件。例如,职工工资调整不得低于其原来工资,学生年龄只能增长等。6.1.3完整性的约束条件动态记录约束动态记录约束是指修改记录的值时记录中各个字段间需要满足某种约束条件。动态数据表约束动态数据表约束是加在数据表变化前后状态上的限制条件,例如事务一致性、原子性等约束条件。6.1.3完整性的约束条件级别状态列级记录级数据表级静态列定义类型格式值域空值记录值应满足的条件实体完整性约束参照完整性约束函数依赖约束统计约束动态改变列定义或列值记录新旧值之间应满足的约束条件数据表新旧状态间应满足的约束条件6.1.4数据库管理系统的完整性控制机制完整性控制机制应具有以下三个方面的功能:定义功能,提供定义完整性约束条件的机制。检查功能,检查用户发出的操作请求是否违背了完整性约束条件。如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。6.2数据库的安全性数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄漏、更改或破坏。事实上,安全性问题不是数据库系统所独有的,所有计算机系统都存在这个问题。只是由于数据库系统中大量数据集中存放,而且为多个用户所共享,网络数据库尤为如此,所以,网络数据库的安全问题至关重要。因此,系统安全保护措施是否有效是网络数据库系统的主要指标之一。相对于网络数据库而言,关系数据库的安全问题主要考虑的是数据的存储安全问题,而网络数据库中还有考虑数据的传输安全等等。6.2数据库的安全性1.用户标识和鉴定。这是安全保护的首要问题。2.存取控制。对于获得数据库使用权的用户进一步设置各个用户的具体使用权限。3.操作系统安全保护。4.密码存储。6.2.1用户安全性所谓用户安全性是指用户身份的合法性。用户身份的验证是通过用户标识与鉴别来实现的,这是系统提供的最外层安全保护措施。当用户首次登录系统时,必须先进行用户注册,注册成功才能成为本系统的合法用户。系统内部记录着所有合法用户的标识。以后当用户再次登录时,必须输入正确的用户名和密码,通过鉴定后才能进入本系统6.2.2权限安全性用户权限是由两个要素组成的:数据对象和操作类型。定义一个用户的存取权限就是要定义这个用户可以在哪些数据对象上进行哪些类型的操作。在数据库系统中,定义存取权限称为授权(Authorization)。所以,权限的安全性主要是指对权限的管理,通过授权与收回权限来保障数据库操作对象的安全。6.2.2权限安全性权限的管理主要通过SQL的GRANT语句(授权)和REVOKE语句(收回权限)来实现。这包括两方面的内容:①定义用户权限,并将用户权限登记到数据字典中。②合法权限检查6.3SQLServer的实现6.3.1数据库完整性在SQLServer中的实现在SQLServer中,可以通过各种约束和缺省、规则、触发器等数据库对象来保证数据的完整性。1.约束约束是SQLServer强制实行的应用规则,它能够限制用户存放到表中数据的格式和可能值。6.3.1数据库完整性在SQLServer中的实现1.约束包括以下几种:主关键字约束PRIMARYKEY:能够保证指定列的实体完整性,应用PRIMARYKEY约束列的空值能力必须定义为NOTNULL。该约束可以应用于一列或多列,应用于多列时,它被定义为表级约束。外部关键字约束FOREIGNKEY:为表中一列或多列数据提供参照完整性。实施FOREIGNKEY约束时,要求在被参照表中定义了PRIMARYKEY约束或UNIQUE约束。6.3.1数据库完整性在SQLServer中的实现唯一约束UNIQUE:它能够保证一列或多列的实体完整性。对于实施UNIQUE约束的列,不允许有任意两行具有相同的索引值。SQLServer允许在每张表上建立多个UNIQUE约束。检查约束CHECK:限制输入到一列或多列的可能值,从而保证SQLServer数据库中数据的值域完整性。缺省值约束:DEFAULT:使用此约束时,如果用户在插入数据操作时没有显式为列提供数据,系统就将缺省值赋给该列。6.3.1数据库完整性在SQLServer中的实现2.缺省缺省是一种数据库对象,它与缺省值约束的作用类似;在INSERT语句中为指定数据列设置缺省值。缺省对象只适用于受INSERT语句影响的行。创建缺省对象使用:CREATEDEFAULT语句,该语句只能在当前数据库中创建缺省对象。6.3.1数据库完整性在SQLServer中的实现3.规则规则是对录入到列中的数据所实施的完整性约束条件,它指定插入到列中的可能值。规则可以被关联到一列或几列,以及用户定义的数据类型。创建规则使用CREATERULE语句,删除规则使用DROPRULE语句6.3.1数据库完整性在SQLServer中的实现4.触发器触发器是一种特殊的存储过程,使用它可以实施更为复杂的数据完整性措施。触发器建立在表一级,它与指定的数据库修改操作相对应。触发器的创建是使用“CREATETRIGGER触发器的名称ON数据表名……”语句来实现的;修改使用“ALTERTRIGGER触发器的名称ON数据表名……”语句来实现。6.3.2数据库的安全性在SQLServer中的实现要进入SQLServer进行操作,必须先通过安全认证。SQLServer7.0的安全认证分两种,一种是利用Windows2000Server的安全认证系统,另一种是SQLServer提供的认证机制。所谓Windows2000Server认证,就是用户先用Windows2000Server中特定的账号登录操作系统,然后就可以直接使用SQLServer上的资源。SQLServer本身也提供登录账号的验证。在使用SQLServer本身提供的登录验证机制时,用户只需提供登录的名称和密码即可进入SQLServer。6.3.2数据库的安全性在SQLServer中的实现1.数据库用户管理在SQLServer数据库系统中,管理好每个数据库用户是涉及到整个系统安全的大事,所以在开发阶段一定要认真规划,确定好每个用户的工作内容,并根据其工作内容给用户授予合适的数据库操作权限。对于用户较多的大型系统,最好将用户划分为不同的用户组,在组的基础上管理用户,给他们授予相应的数据库操作权限,这样就可以避免用户越权操作数据。6.3.2数据库的安全性在SQLServer中的实现下面介绍如何使用管理工具和Transaction-SQL语言来管理数据库用户和用户组。①使用管理工具1)管理数据库角色使用SQL企业级管理器中的用户组管理可以为指定数据库新建、修改或删除数据库角色(相当于Windows中的用户组)。应该注意的是,只有系统管理员和数据库所有者才有权创建或删除。在创建新数据库角色时,展开要创建角色的数据库,右击其中的“角色”项,在弹出的快捷菜单中选择“新建数据库角色”,然后在“名称”可编辑输入框中输入新的角色名,并单击“添加”按钮将用户添加到该“标准角色”中,按“确定”按钮存盘后,右击该角色,并选择“属性”,在出现“数据库属性角色”对话框中单击“权限”按钮,设定该角色对当前数据库的操作权限。6.3.2数据库的安全性在SQLServer中的实现2)管理用户。在SQL企业级管理器中的用户管理窗口中可以创建、修改或删除数据库用户。创建新的数据库用户时,展开要创建用户的数据库,右击其中的“用户”项,在弹出的快捷菜单中选择“新建数据库用户”,出现“数据库用户属性”对话框,在“登录名”中选择或新建一个登录
本文标题:第6章 数据库的完整性和安全性
链接地址:https://www.777doc.com/doc-3185215 .html