1 / 56

数据库原理及应用

数据库原理及应用. 《 数据库原理及应用 》 课程组 Jmun_jsjxy@163.com. 第八章. 数据库的管理. 【 本章要点 】. 数据库的保护有完整性保护,安全性保护,并发控制管理,事务管 l 理,数据库的备份与恢复等. 8.1 数据库的完整性实施方法. 8.1 数据库的完整性实施方法. 数据完整性是指数据的正确性、有效性和相容性。 数据库完整性约束条件作用的对象可分为列级、元组级和关系级三种粒度。 对列的约束主要指对其取值类型、范围、精度、排序等的约束条件。 对元组的约束是指对记录各字段间联系的约束。

gamma
Télécharger la présentation

数据库原理及应用

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 数据库原理及应用 《数据库原理及应用》课程组 Jmun_jsjxy@163.com 荆楚理工学院

  2. 第八章 数据库的管理 荆楚理工学院

  3. 【本章要点】 数据库的保护有完整性保护,安全性保护,并发控制管理,事务管l理,数据库的备份与恢复等. 荆楚理工学院

  4. 8.1数据库的完整性实施方法 8.1 数据库的完整性实施方法 数据完整性是指数据的正确性、有效性和相容性。 数据库完整性约束条件作用的对象可分为列级、元组级和关系级三种粒度。 对列的约束主要指对其取值类型、范围、精度、排序等的约束条件。 对元组的约束是指对记录各字段间联系的约束。 对关系的约束是指对若干记录间、关系集合上以及关系之间的联系的约束。 荆楚理工学院

  5. 8.1数据库的完整性施方法 关系DBMS通常使用声明数据完整性实现完整性约束。 声明型数据完整性:作为数据库定义或说明的一部分在语法中实现,是SQL语言的修饰,在Create Table和Alter Table定义中使用constraint和default语句限制表中数据的值。 荆楚理工学院

  6. 8.1数据库的完整性实施方法 在使用create table和alter table语句中,进行完整性限定的子句有: ● 缺省约束(default constraints):当向数据库中的表中插入数据时,如果用户没有明确给出某列的值,则系统自动为该字段输入指定的值。 ● 检查约束(check constraints):限制插入列中的值,如性别字段输入时只允许出现男或女,其它值一律不许出现。 荆楚理工学院

  7. 8.1数据库的完整性实施方法 ●唯一约束(Unique Constraints):要求表中在指定的列上没有两行具有相同的值。 ● 参照约束(Reference Constraints)/外键约束(Foreign Key Constraints):要求指定列或者外键中正被插入或者更新的新值,必须在主表的相应主键中已经存在。 荆楚理工学院

  8. 8.1数据库的完整性实施方法 利用SQL语言实施完整性约束,它使用CREATE TABLE 和ALTER TABLE 语句中的CONSTRAINT引出完整性约束的子句,一般语法为: CREATE TABLE 表名 (列名 数据类型 [[CONSTRANIT 约束名] PRIMARY KEY [CLUSTERED | NONCLUSTERED]]) 荆楚理工学院

  9. 8.2数据库的安全性实施方法 8.2 数据库的安全性实施方法 数据库的安全性是防止未经授权,非法使用数据,防止数据的泄露,篡改或破坏。 对于数据库安全性的控制常可采用权限控制、定义视图和设计触发器程序等方法。 荆楚理工学院

  10. 8.2数据库的安全性实施方法 一、定义视图 DBA根据用户的数据需要和访问数据库的权限,定义用户视图。 例如,基于职工表建立一个通讯录视图,使用者只能查看职工的姓名和电话号码。实现语句如下: CREATE VIEW 通讯录 AS SELECT 姓名,电话号码 FROM 职工; 荆楚理工学院

  11. 8.2数据库的安全性实施方法 二、访问权限控制 访问控制(Access Control)是对用户访问数据库各种资源(包括基本表,视图,各种目录以及实用程序等)的权限(包括创建,撤消,查询,增加,删除,修改,执行等)的控制。这是数据库安全的基本手段。 荆楚理工学院

  12. 8.2数据库的安全性实施方法 目前许多大型数据库管理系统将数据库用户的权限分为具有DBA特权的数据库用户和一般数据库用户。其中,具有DBA特权的数据库用户拥有对数据库最大的权限,可以支配整个数据库资源。而一般数据库用户是由DBA特权用户创建的,并由DBA用户授予其访问数据库的权限,可以在允许的权限范围内对数据库进行操作。当数据库系统安装之后,DBA对所有数据库资源就拥有所有权限。 荆楚理工学院

  13. 8.2数据库的安全性实施方法 DBA可以通过SQL语言的GRANT语句授予其他用户对数据库的操作权限。GRANT语句的语法格式是: GRANT<系统权限列表> ON TABLE<表名>|ON VIEW <视图名> TO <用户名列表> |PUBLIC[WITH GRANT OPTION] 荆楚理工学院

  14. 8.2数据库的安全性实施方法 可以 授予用户的权限有以下几种: ●ALTER可以修改指定表的结构。 ●DELETE可以在指定的表或视图中删除行。 ●INSERT可以在指定的表中插入行。 ●SELECT可以查询指定的表或视图。 ●UPDATE可以更新指定表或视图中的数据。 荆楚理工学院

  15. 8.2数据库的安全性实施方法 例 授予用户TEACHER查询成绩表的权限,并允许他把查询的权限授予他人。 GRANT SELECT ON TABLE 成绩 TO TEACHER WITH GRANT OPTION 除了显示地授予用户的权限之外,资源的创建者对其资源拥有一切的权限。 荆楚理工学院

  16. 8.2数据库的安全性实施方法 若DBA撤消某用户的权限,则这个用户转授给其他用户的权限也将同时被撤消。 REVOKE语句的语法格式是: REVOKE .<系统权限列表>ON TABLE <表名>|ON VIEW<视图名> FROM <用户名列表>|PUBLIC; 荆楚理工学院

  17. 8.2数据库的安全性实施方法 例如:DBA授予用户A查询和修改工资表的权限,同时允许用户A具有转授权。 GRANT SELECT,UPDATE ON TABLE 工资 TO USERA WITH GTRANT OPTION; 用户A将所获得的权限又转授给用户B。 GRANT SELECT,UPDATE ON TABLE 工资 TO USERB; DBA撤消用户A 对工资表查询和修改的权限,用户B所获得的权限也同时被撤消。 REVOKE SELECT,UPDATE ON TABLE 工资 FROM USERA; 荆楚理工学院

  18. 8.2数据库的安全性实施方法 也可以利用DBMS 所提供的设计查询,报表,输入/输出格式工具软件,在设计用户的应用界面时,设定应用的限制属性,实现对数据库访问的控制。例如,在使用这些应用时,审查所授的权限或口令。 上面安全性控制一般限制在表、域的级别上,但有一些系统要求在记录一级实施控制。 荆楚理工学院

  19. 8.2数据库的安全性实施方法 为了实现权限审定方案,合理地分配用户与数据库的操作权限,数据库设计者必须维护一个授权矩阵,它包含被授权者、权限施加对象和授予的权限等三要素。授权矩阵是DBA的主要任务之一。 对于大型的数据库来说,数据表越多,管理起来也就越困难,既要确保用户能够访问到他们所需要的数据但又不能获得超出他们权限的数据,因此,在一般的编程工作中,将相同数据上有相同权限的用户放入一个组中进行管理,这样可以大大降低权限设置的工作量。 荆楚理工学院

  20. 8.3事务处理 8.3事务处理 一、事务的基本概念 事务反映现实世界中所需要完整单位提交的一项工作,事务为一个数据库应用中执行一个逻辑功能的操作集。对于一个事务,它必须完整地执行,或者都不执行。 荆楚理工学院

  21. 8.3事务处理 事务具有原子性,永久性,串行性和隔离性等四种基本特性。 ● 原子性:事务的所有操作必须完成,否则事务将被撤消。因此,事务是不可分割的最小工作单位,它的所有操作要么全部执行,要么一个也不执行,它是一个整体。 ● 永久性:指数据库必须保持一致性的状态,当一个事务完成后,数据库必须达到一个新的一致性的状态。 荆楚理工学院

  22. 8.3事务处理 ●串行性:串行性是指多个事务并发处理的过程。多个并发事务可以同时执行,表面上并发事务处理是并行的,实际上是串行有序地进行处理。 ● 隔离性:指当一个事务执行期间所使用的数据,不能被其它的事务再使用,此事务对当前操作的数据具有独占性,直到此事务结束为止。这种事务的隔离性可保证在多用户的数据库环境中多个用户同时操作一个数据库时能保持数据库的一致性和正确性。 荆楚理工学院

  23. 8.3事务处理 二、事务处理过程分析 事务是由用户或者程序员根据具体的业务规程进行定义的。当计算机系统防碍了一个事务的正常执行时,事务管理能将数据库复原到原来的一致性的状态。 荆楚理工学院

  24. 8.3事务处理 例 假设账号为0027-654321的客户购买10件商品代码K01的商品,设这10件商品的总价为200.00元。根据业务规则,在执行购买事务时,应当完成如下的操作过程: UPDATE 库存表 SET 库存量= 库存量 - 10 WHERE 商品代码= ‘K01’; UPDATE 进账表 SET 金额 = 金额 + 200.00 WHERE 账号 = ‘0027-654321’ ; 荆楚理工学院

  25. 8.3事务处理 通过实际销售业务规则可知,必须完整地执行上述了两个SQL语句之后,这笔交易才算完成。如果这两个SQL语句仅仅执行了其中的一个语句,则必然导致数据库的不一致性。例如如果程序在执行期间,执行了前一句,更新了商品K01的数量,但此时计算机突然断电或死机,则后一个SQL语句是不能被执行的,此时库存表更新了,但进账表中的金额却没有被修改,这样会产生数据库的不一致性。 如果发生这种情况,DBMS系统应将数据库恢复到没有更新K01数据之前的一致性状态,当故障排除后,数据库的数据状态是一致的,可以通过再次提交事务来完成购买这个事务。 荆楚理工学院

  26. 8.3事务处理 三、 SQL的事务管理 SQL语言进行事务管理的手段主要通过两个命令来实现,即事务提交COMMIT和事务撤消ROLLBACK(回滚)。 事务提交COMMIT是将该事务对数据库的所有更新写回到磁盘的物理数据库中,事务正常结束。 事务撤消ROLLBACK是指系统将该事务对数据库的所有已完成的更新操作全部撤消,恢复到事务开始前的一致的状态。 荆楚理工学院

  27. 8.3事务处理 在SQL语言对数据库的操作中,一般都是按照用户或应用程序所规定的事务流程顺序执行,直到遇到下列情况之一为止: ①执行COMMIT语句,说明对数据库的所有操作都已存入数据库中。COMMIT语句自动结束SQL的事务,并开始新的事务。 ②执行ROLLBACK语句,说明要撤消对事务开始后的所有对数据库的操作,并且使数据库回滚到事务开始之前的一致性的状态。 荆楚理工学院

  28. 8.3事务处理 ③程序正常结束,这种情况说明对数据库的所有修改已存入数据库中。 ④程序被非常终止,说明对数据库的所有改变被撤消,数据库回滚到原来一致性状态。 当系统非正常结束时(如掉电、软件故障),系统在重新恢复时会自动执行ROLLBACK命令。 荆楚理工学院

  29. 8.3事务处理 SQL还提供了自动提交事务的工作方式,其命令为: SET AUTOCOMMIT ON 与之相反的人工工作方式为: SET AUTOCOMMIT OFF 一旦规定了自动提交事务方式,则系统将每条SQL命令视为一个事务,并在命令成功执行完成时自动地完成事务的提交。 荆楚理工学院

  30. 8.4并发控制 8.4 并发控制 一、 并发处理产生的三种不一致性 多用户系统:支持多个不同的程序或多个用户独立执行同一个程序同时存取数据库中相同的数据。 并发处理:在多用户的数据库系统中,多个事务交迭地执行,称为并发处理。并发处理可能会导致数据完整性与一致性方面的问题,如丢失更新、读出的是未提交的数据、非一致检索的问题等。 并发控制:DBMS系统对这种并发操作提供一定的控制以防止它们彼此干扰,从而保证数据库的正确性不被破坏。 荆楚理工学院

  31. 8.4并发控制 典型的并发处理产生的错误结果有如下三种。 (1) 丢失数据 若事务T1和T2是交替执行的,在将更新的结果写回数据库时,T1写了之后,马上由T2写入它所计算出的值,此时最后数据库中的结果是由T2写入的,而T1写入的结果 被丢失。 荆楚理工学院

  32. 8.4并发控制 (2) 读未提交数据 当两个事务T1和T2并发执行时,在T1对数据库更新的结果没有提交之前,T2使用了T1的结果,如果在T2读取数据之后T1又撤消事务,这就可能引起错误。 荆楚理工学院

  33. 8.4并发控制 (3) 不一致性检索 为了保险起见,一个事务可能对同一个数据连续读两次,然而事务的并发执行可能导致在两次读之间插入了另一个更新事务,这样会使前一个事务的两次读出的同一个数据值不一致,这就是不一致检索问题。 荆楚理工学院

  34. 8.4并发控制 二、封锁 封锁的基本思想是,在事务需要对特定数据对象进行操作时,事务通过向系统请求对它所希望的数据对象加锁,以确保它不被非预期地改变。 荆楚理工学院

  35. 8.4并发控制 1.封锁的类型 共享锁(Shared Lock-SL)又称为读锁。如果事务T对数据对象X加上了共享锁,则其它事务只能对X再加共享锁,不能加排它锁。从而保证了其它事务可以读X,但在T释放X上的锁之前不能对X作任何修改。 荆楚理工学院

  36. 8.4并发控制 排它锁(Exclusive Lock-XL)又称为写锁。如果事务T对数据对象X加上了排它锁,则只允许事务T独占数据对象X,其它任何事务都不能对X施加任何类型的锁,直到事务T释放X上的锁为止。通过排它锁可以有效地避免其它事务读取不一致的数据。 荆楚理工学院

  37. 8.4并发控制 对于两种锁的请求封锁控制规程可用下表所示的相容矩阵来表示。Y表示可以继续加锁,N表示不能加锁。 荆楚理工学院

  38. 8.4并发控制 事务执行对数据库的操作请求时,要先请求相应的锁,对读操作请求共享锁SL,对更新操作(插入、删除、修改)请求排它锁XL。事务一直占有此锁直到执行COMMIT或ARORT等时释放该锁。 荆楚理工学院

  39. 8.4并发控制 2.锁的粒度 封锁的单元可以是逻辑单元,也可以是物理单元。在关系数据库中,封锁的对象可以是数据库、表、记录以及字段等逻辑单元,也可以是页、块等物理组织单元。 以粒度来描述封锁的数据单元大小,封锁对象大小称为封锁的粒度。 荆楚理工学院

  40. 8.4并发控制 数据库管理系统可以决定不同粒度的锁,由最低层的数据元素到最高层的整个数据库: ●粒度越细,并发性就越大,但软件复杂性和系统开销也越大。 ●锁住整个数据库,DBMS的管理与控制最简单,只需设置和测试一个锁,故系统开销也最小。然而对于数据的存取则只能顺序进行,因而系统的总体性能大大下降。 荆楚理工学院

  41. 8.4并发控制 3. 活锁与死锁 在并发事务处理过程中,由于锁会使一事务处于等待状态而调度其他事务处理,因此该事务可能会因优先级低而永远等待下去,这种现象称为活锁。活锁问题的解决与调度算法有关,一种最简单的办法是“先来先服务” 。 两个以上事务循环等待被同组中另一事务锁住的数据单元的情形称为死锁。在任何一个多道程序设计系统中,死锁总是潜在的,所以在这种环境下DBMS需要提供死锁预防。 荆楚理工学院

  42. 8.4并发控制 主要有下述几种预防死锁的方法: ● 一次性锁请求,每一事务在处理时一次提出所有的锁请求,仅当这些请求全部满足时事务处理才进行,否则让其等待,这样则不会出现死锁情况。这种方法 实现简单,但系统性能将下降。 ● 锁请求排序,将每个数据单元标以线性顺序,然后要求每一事务都按此顺序提出锁请求。这种方法也能防止死锁发生,但同样会降低系统的并行性。 荆楚理工学院

  43. 8.4并发控制 ●序列化处理,通过应用设计为每一数据单元建立一个“主人”程序,对给定书记单元的所有请求都发送给主人,而“主人”以单道的形式运行。这样系统可以是多道运行,可避免死锁发生,但系统性能,数据的流行性与完整性可能受到影响。 ● 资源剥夺,即每当事务因锁请求不能满足而受阻时,强行令两个冲突的事务中底的一个ABORT,释放所有的锁,以后重新运行。使用这个方法必须注意防止活锁发生。 荆楚理工学院

  44. 8.4并发控制 对待死锁的另一种办法是不去防止,而让其发生并随时进行检测,一旦检测到系统已发生了死锁再进行解除处理。 ●死锁检测可以用图论的方法实现,并以正在执行的事务为结点。此时,若事务Ti释放已占有的资源(数据当然是一种资源),则自Ti到Tj有一有向边,这样构成的有向图叫等待状态图。于是,检测死锁则成为在有向图中求圈的问题,这不难实现。 荆楚理工学院

  45. 8.4并发控制 ●确定检测时机有两种基本选择是在锁请求引起等待时和定期进行检测。前一种选择能及时发现死锁,但死锁可能被推迟发现。而且,时间间隔的大小也有很大的关系,间隔越大,检测出死锁的可能性就越大,系统的无效开销就越小,但死锁发现的推迟就越长。 ●死锁的解除是在构成死锁的事务集中选择一个“牺牲者”,令其ABORT,即停止其执行,清除(UNDO)其对数据库所作的更改,释放所有被它占有的资源(不仅仅是数据)。 荆楚理工学院

  46. 8.5数据库的备份与恢复 8. 5 数据库的备份与恢复 一、 故障的类型 数据库系统运行时可能发生的各种故障类型,一般分类如下: 1.事务故障 所谓事务故障是由程序执行错误而引起的事务非预计的、异常的终止。它发生在单个事务的局部范围内,实际上就是程序故障。 2.系统故障 系统故障指系统停止或错误运行,从而要重新启动系统。 3.介质故障 介质故障是指外存设备故障。 荆楚理工学院

  47. 8.5数据库的备份与恢复 二、事务日志 DBMS系统通过事务日志保存所有的更新数据库事务的操作过程。可以利用事务日志保存的信息来恢复由程序非法中止或者由硬件系统故障等所造成的数据丢失。 日志文件可以是磁带或磁盘数据集。事务记录包含了对数据库处理的事务的基本信息,如日期、时间、输入与输出事务的路径、事务的标识符、事务处理的开始与结束时间、相应的程序状态标志等。 当DBMS执行更新数据库的操作事务时,它要同时更新事务日志。事务日志本身也是一个数据库,DBMS完全可以像管理其它数据库一样管理事务日志。 荆楚理工学院

  48. 8.5数据库的备份与恢复 三、恢复 恢复是使数据库从一种状态恢复到原来一致性状态。数据库系统的恢复包括事务恢复、数据库状态恢复和系统服务恢复。数据库恢复操作的依据是后备副本和事务日志文件。 1.事务恢复 事务恢复是指事务未运行至正常终止点前被撤消,此时应对该事务做撤消处理。 荆楚理工学院

  49. 8.5数据库的备份与恢复 具体做法是: (1) 每当一个事务被提交(COMMIT)时,将对数据库所用的改变物理地写入数据库,从而避免因后来故障而丢失。 荆楚理工学院

  50. 8.5数据库的备份与恢复 (2) 当发生事务故障时: ● 执行一个ABORT并UNDO(清除)它对数据库的任何改变,即进行下面所述的“向后恢复”数据库; ● 清除它对其它事务的影响,即ABORT那些读了它的“废数据”的事务。这又可能进一步引起事务的ABORT,称为串联撤消过程; ● UNDO所有被撤消的事务对数据库所作的任何改变。 荆楚理工学院

More Related