您好,欢迎访问三七文档
第6章数据库的保护6.1数据库的安全性6.2SQLServer数据库的安全性6.3完整性6.4事务管理的基本概念6.6并发控制6.6数据库恢复6.1数据库的安全性6.1.1安全性控制的一般方法6.1.2数据库用户的种类返回首页数据库的安全性是指保护数据库,以防止非法使用所造成数据的泄露、更改和破坏。安全性控制是指尽可能的杜绝所有可能的数据库非法访问。6.1.1安全性控制的一般方法实际上,安全性问题并不是数据库系统所独有的,所有计算机系统中都存在这个问题,只是由于数据库系统中存放了大量数据,并为许多用户直接共享,使安全性问题更为突出而已。所以,在计算机系统中,安全措施一般是一级一级层层设置的,例如,图5-1就是一种很常用的安全模型。1.用户标识和鉴定用户标识和鉴定是系统提供的最外层安全保护措施。其方法是由系统提供一定的方式让用户标识自己的名字或身份。系统内部记录着所有合法用户的标识,每次用户要求进入系统时,由系统将用户提供的身份标识与系统内部记录的合法用户标识进行核对,通过鉴定后才提供机器使用权。用户标识和鉴定的方法有很多种,而且在一个系统中往往是多种方法并举,以获得更强的安全性。标识和鉴定一个用户最常用的方法是用一个用户名或者用户标识号来标明用户身份,系统鉴别此用户是否是合法用户。若是,则可进入下步的核实;若不是,则不能进入系统。2.存取控制在数据库中,为了保证用户只能访问他有权存取的数据,必须预先对每个用户定义存取权限。对于通过鉴定进入系统的用户(即合法用户),系统根据他的存取权限定义对他的各种操作请求进行控制,确保他只执行合法操作。存取权限由数据对象和操作类型两个要素组成。定义一个用户的存取权限就是要定义这个用户可以在哪些数据对象上进行哪些类型的操作。在数据库系统中,定义存取权限称为授权(Authorization)。这些授权定义经过编译后存放在数据字典中。数据对象操作类型模式模式建立、修改、检索外模式建立、修改、检索内模式建立、修改、检索数据表查找、插入、修改、删除属性列查找、插入、修改、删除表6-1关系数据库系统中的存取权限用户名数据对象名允许的操作类型刘勇关系BookSelect张伟关系BookAll张伟关系ReaderAll张伟关系BorrowUpdate丁钰关系BorrowSelect丁钰关系BorrowInsert………………表6-2一个授权表的实例用户名数据对象名允许的操作类型刘勇关系BookSelect张伟关系BookAll张伟关系ReaderAll张伟关系BorrowSelect张伟关系Borrow.BdateUpdate丁钰关系Borrow.BookidSelect丁钰关系Borrow.CardidSelect………………表6-3一个授权表的实例用户名数据对象名允许的操作类型存取谓词刘勇关系BookSelectPublish=“中国水利水电出版社”张伟关系BookAll张伟关系ReaderAll张伟关系BorrowSelect张伟关系Borrow.BdateUpdate丁钰关系Borrow.BookidSelect丁钰关系Borrow.CardidSelect表6-4一个授权表的实例3.定义视图进行存取的控制,不仅可以通过授权与收回权力来实现,还可以通过定义用户的外模式来提供一定的安全保护功能。在关系系统中,就是为不同的用户定义不同的视图,通过视图机制把要保密的数据对无权存取这些数据的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。4.审计用户识别和鉴定、存取控制、视图等安全性措施均为强制性机制,将用户操作限制在规定的安全范围内。但实际上任何系统的安全性措施都不可能是完美无缺的,蓄意盗窃、破坏数据的人总是想方设法打破控制。所以,当数据相当敏感,或者对数据的处理极为重要时,就必须以审计技术作为预防手段,监测可能的不合法行为。审计追踪使用的是一个专用文件或数据库,系统自动将用户对数据库的所有操作记录在上面,利用审计追踪的信息,就能重现导致数据库现有状况的一系列事件,以找出非法存取数据的人。5.数据加密对于高度敏感性数据,例如财务数据、军事数据和国家机密,除以上安全性措施外,还可以采用数据加密技术,以密码形式存储和传输数据。这样企图通过不正常渠道获取数据,例如,利用系统安全措施的漏洞非法访问数据,或者在通信绕路上窃取数据,那么只能看到一些无法辨认的二进制代码。用户正常检索数据时,首先要提供密码钥匙,由系统进行译码后,才能得到可识别的数据。返回本节6.1.2数据库用户的种类数据库用户按其操作权限的大小可分为三类:1.数据库系统管理员2.数据库对象拥有者3.普通用户返回本节6.2SQLServer数据库的安全性数据库的安全是数据库技术的重要组成部分,Microsoft公司推出的SQLServer2000企业版运行在Windows2000Server或Windows2000AdvancedSever操作系统上,也可以运行在WindowsNT操作系统上,这些操作系统都提供了比较完善的安全管理措施,而同时SQLServer2000也可以使用自己的安全管理技术。返回首页SQLServer的安全性管理包括以下几个方面:数据库登录管理、数据库用户管理、数据库角色管理以及数据库权限的管理。返回本节6.3完整性5.3.1完整性约束条件5.3.2完整性控制5.3.3SQLServer的完整性返回首页数据库的完整性是指数据的正确性和相容性。数据库是否具备完整性关系到数据库系统能否真实地反映现实世界,因此维护数据库的完整性是非常重要的。数据的完整性与安全性是数据库保护的两个不同方面。6.3.1完整性约束条件完整性约束条件作用的对象可以有列级、元组级和关系级三种粒度。其中对列的约束主要指对其取值类型、范围、精度和排序等的约束条件。对元组的约束是指对记录中各个字段间的联系的约束。对关系的约束是指对各记录间或关系之间的联系的约束。1.静态列级约束静态列级约束是对一个列的取值域的说明,这是最常见最简单同时也最容易实现的一类完整性约束,包括以下几方面:(1)对数据类型的约束,包括数据的类型、长度、单位和精度等。(2)对数据格式的约束。(3)对取值范围或取值集合的约束。(4)对空值的约束。(5)其他约束。2.静态元组约束一个元组是由若干个列值组成的,静态元组约束就是规定组成一个元组的各个列之间的约束关系。静态元组约束只局限在单个元组上,因此比较容易实现。例如在图书借阅表中可以规定:还书日期借书日期。3.静态关系约束在一个关系的各个元组之间或者若干关系之间常常存在各种联系或约束。常见的静态关系约束有以下四种:(1)实体完整性约束。(2)参照完整性约束。(3)函数依赖约束。(4)统计约束。4.动态列级约束动态列级约束是修改列定义或列值时要满足的约束条件,包括以下两方面:(1)修改列定义时的约束。(2)修改列值时的约束。5.动态元组约束动态元组约束是指修改某个元组时需要参照其旧值,并且新旧值之间需要满足某种约束条件。6.动态关系约束动态关系约束是加在关系变化前后状态上的限制条件。例如,事务一致性、原子性等约束条件。粒度状态列级元组级关系级静态列定义类型格式值域空值元组值应满足的条件实体完整性约束参照完整性约束函数依赖约束统计约束动态改变列定义或列值元组新旧值之间应满足的约束条件关系新旧状态间满足的约束条件表5-5完整性约束条件返回本节6.3.2完整性控制1.完整性约束的定义2.完整性约束条件的检查3.对违背了完整性约束条件的操作应采取的措施DBMS的完整性控制机制应具有三个方面的功能:(1)定义功能:即提供定义完整性约束条件的机制。(2)检查功能:即检查用户发出的操作请求是否违背了完整性约束条件。(3)如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。对于违反实体完整性规则和用户定义的完整性规则的操作一般都是采用拒绝执行的方式进行处理。而对于违反参照完整性的操作,并不都是简单的拒绝执行,有时还需要采取另一种方法,即接受这个操作,同时执行一些附加的操作,以保证数据库的状态仍然是正确的。(1)删除被参照关系的元组时的考虑。(2)修改被参照关系中主码的考虑。(3)外码是否可以接受空值。(1)删除被参照关系的元组时的考虑。1)级联删除(Cascades)。2)受限删除(Restricted)。3)置空值删除(Nullifies)。(2)修改被参照关系中主码的考虑。1)级联修改(Cascades)。2)受限修改(Restricted)。3)置空值修改(Nullifies)。(3)外码是否可以接受空值。外码是否可以接受空值是由其语义来决定的,在上面提到的职工-部门数据库中,“职工”关系包含有外码“部门号”,某一元组的这一列若为空值,表示这一职工尚未分配到任何具体的部门工作。这和应用环境的语义是相符的,因此“职工”表的“部门号”列应允许空值,但在学生-选课数据库中,“学生”关系为被参照关系,其主码为“学号”。“选课”为参照关系,外码为“学号”。返回本节6.3.3SQLServer的完整性1.实体完整性2.参照完整性3.用户定义的完整性1.实体完整性数据库中最重要的约束就是实体完整性约束,在SQLServer中是通过说明某个属性或属性集构成关系的主码来实现关系的实体完整性。主码意味着对于关系的任意两个元组,不允许在说明为主码的属性或属性组上取相同的值,也不允许主码中属性取空值。主码约束在建表语句中说明,可用两种方法说明主码:第一种方法是在列定义中用关键字PRIMARYKEY;第二种方法是在表级完整性定义中使用[CONSTRAINT约束名]PRIMARYKEY[(属性列表)]子句。2.参照完整性外码的定义是在表定义时通过FOREIGNKEY子句来完成的。其语法格式如下:[CONSTRAINT约束名]FOREIGNKEY(列名)REFERENCES被参照表表名(被参照表列名)[ONDELETE|UPDATECASCADES|RESTRICTED|NULLIFIES]其中:[ONDELETE|UPDATECASCADES|RESTRICTED|NULLIFIES]选项是说明当被参照关系某元组被删除或主码被修改时,参照关系中相应元组的处理办法。3.用户定义的完整性SQLServer允许用户在建表时定义下列完整性约束:列值非空(NOTNULL短语)。列值惟一(UNIQUE短语)。检查列值是否满足一个布尔表达式(CHECK短语)。返回本节6.4事务管理的基本概念6.4.1事务(Transaction)的概念6.4.2事务的状态6.4.3事务的特性6.4.4SQLServer中的事务返回首页6.4.1事务(Transaction)的概念事务是用户定义的数据库操作序列,这些操作可作为一个完整的工作单元。一个事务内的所有语句是一个整体,要么全部执行,要么全部不执行。即事务是不可再分的原子性工作。如在银行业务中,“从帐户A转移资金X到帐户B”就是一个典型的事务。这个事务可以分解为两个动作:(1)从账户A减去金额X。(2)在账户B中加上金额X。返回本节6.4.2事务的状态事务的基本操作包括:(1)事务开始(BEGIN_TRANSACTION)。事务开始执行。(2)事务读写(Read/Write)。事务进行数据操作。(3)事务结束(END_TRANSACTION)。事务完成所有的读/写操作。(4)事务交付(COMMIT_TRANSACTION)。事务完成所有的读/写操作,并保存操作结果。返回本节6.4.3事务的特性事务所必须具有的重要特性包括:(1)原子性(Atomicity)。(2)一致性(Consistency)。(3)隔离性(Isolation)。(4)持久性(Durability)。上述的四个特性也简称为ACID特性,保证ACID特
本文标题:数据库第六章
链接地址:https://www.777doc.com/doc-3205462 .html