大学数据库原理与技术(第二版)-程学先-大学教学资料课件PPT
收藏
资源目录
压缩包内文档预览:(预览前20页/共43页)
编号:21835833
类型:共享资源
大小:15.97MB
格式:ZIP
上传时间:2019-09-06
上传人:QQ24****1780
认证信息
个人认证
王**(实名认证)
浙江
IP属地:浙江
25
积分
- 关 键 词:
-
大学
数据库
原理
技术
第二
程学先
教学
资料
课件
ppt
- 资源描述:
-
大学数据库原理与技术(第二版)-程学先-大学教学资料课件PPT,大学,数据库,原理,技术,第二,程学先,教学,资料,课件,ppt
- 内容简介:
-
数据库原理与技术 (第二版),程学先 程传慧 曾 玲 陈永辉 郑秋华 杨晓艳,第五章 数据库的保护,数据库的完整性实施方法,数据库的安全性实施方法,本 章 要 点,退 出,事 务 处 理,并 发 控 制,数据库的备份与恢复,数据库的完整性实施方法,约束 目前一般关系数据库都提供了定义完整性约束条件的功能和检查是否违背完整性约束条件的方法。 列级约束 表级约束,常用的关系数据库实现完整性约束的方法 1.声明型数据完整性 2.利用SQL语言实施完整性约束,声明型数据完整性,在使用create table和alter table语句中进行完整性限定的子句有: 缺省约束(default constraints):当向数据库的表中插入数据时,如果用户没有明确给出某列的值,则系统自动为该字段输入指定的值。 检查约束(check constraints):限制插入列中的值。 惟一约束(unique constraints):要求同一表中在指定的列上没有两条记录具有相同的值。 参照约束(reference constraints)外键约束(foreign key constraints):要求指定列或者外键中正被插入或者更新的新值,必须在主表的相应主键中已经存在。,利用SQL语言实施完整性约束,使用CONSTRAINT引出完整性约束的子句, 语法为: CREATE TABLE table_name (column_name data_type CONSTRAINT constraint_name PRIMARY KEY CLUSTERED | NONCLUSTERED |FOREIGH KEYREFERENCES ref_table (ref_column) ),table_name:创建约束所在的表的名称 column_name:列名 data_type:定义的数据类型 constraints_name:约束名 PRIMARY KEY:创建表时定义主关键字 FOREIGH KEY:外键关联 REFERENCE:其后面所接的表名就是所参照的表,【例】在创建学生表时,加入约束的语句如下: CREATE TABLE 学生表 (学号 CHAR(7) NOT NULL UNIQUE, 姓名 CHAR(8), 性别 CHAR(2), 专业代号 CHAR(3), 所属系别 CHAR(5) , PRIMARY KEY (学号), FOREIGN KEY (所属系别 REFERENCE (系部表),数据库的安全性实施方法,数据库的安全性 指防止未经授权非法使用数据,防止数据的泄露、篡改或破坏 。 常用的关系数据库实现安全性的方法: 定义视图 权限控制 设计触发器程序,定义视图,DBA根据用户的数据需要和访问数据库的权限来定义用户视图 【例】基于职工表建立一个通讯录视图,使用者只能查看职工的姓名和电话号码。实现语句如下: CREATE VIEW 通讯录 AS SELECT 姓名,电话号码 FROM 职工;,利用DBMS所提供的设计查询、报表、输入/输出格式工具软件,在设计用户的应用界面时,设定应用的限制属性,实现对数据库访问的控制。,访问权限控制,访问控制(Access Control) 指对用户访问数据库各种资源(包括基本表、视图、各种目录以及实用程序等)的权限(包括创建、撤消、查询、增加、删除、修改、执行等)的控制 。 数据库用户的权限 DBA特权的数据库用户 一般数据库用户,注意:在DBA建立一个新用户时,必须授予这个用户一定的权限,否则新用户仍然无法使用数据库。 DBA可以通过SQL语言的GRANT语句授予其他用户对数据库的操作权限, GRANT语句的语法格式是: GRANT ON TABLE |ON VIEW TO |PUBLICWITH GRANT OPTION,可以授予用户的权限有以下几种: ALTER:修改指定表的结构。 DELETE:在指定的表或视图中删除行。 INSERT:在指定的表中插入行。 SELECT:查询指定的表或视图。 UPDATE:更新指定表或视图中的数据。,【例】允许所有用户查询系部表的情况。 GRANT SELECT ON TABLE 系部表 TO PUBLIC 【例】允许用户USER1查询学生表产生的视图V1。 GRANT SELECT ON VIEW V1 TO USER1 【例】允许用户USER2在系部表中插入或删除数据。 GRANT INSERT,DELETE ON TABLE 系部表 TO USER2 【例】允许用户USER1和USER3修改系部表的结构。 GRANT ALTER ON TABLE 系部表 TO USER1,USER3 【例】授予用户TEACHER查询成绩表的权限,并允许他把查询的权限授予他人。 GRANT SELECT ON TABLE 成绩 TO TEACHER WITH GRANT OPTION,撤消权限 除了显示的授予用户的权限之外,资源的创建者对其资源拥有一切权限,而且既可以授予用户权限,也可以撤消该用户的权限。用户的权限一旦被撤消,它所转授他人的权限也将同时被撤消。 REVOKE语句语法格式 REVOKE ON TABLE |ON VIEWFROM |PUBLIC;,事务处理,事务 反映现实世界中所需要按完整单位提交的一项工作,它一般是一个数据库应用中执行一个逻辑功能的操作集。 对于一个事务,要求它要不完整地执行,要不都不执行。 事务的基本特性 原子性 永久性 串行性 隔离性 事务以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。,事务处理过程分析,【例】假定用户USER1要查看表ACCOUNT中账号为0027-654321的账面的资金情况。 则可以通过SQL语句来实现,语句如下: SELECT 账号,姓名,可用资金 FROM ACCOUNT WHERE (账号=0027-654321);,【例】假设账号为0027-654321的客户购买10件商品代码K01的商品,设这10件商品的总价为200.00元。 根据业务规则,在执行购买事务时,应当完成如下的操作过程: UPDATE 库存表 SET 库存量库存量10 WHERE 商品代码K01 UPDATE 进账表 SET 金额金额200.00 WHERE 账号0027-654321 ;,SQL的事务管理,事务提交COMMIT 将该事务对数据库的所有更新写入到磁盘的物理数据库中,事务正常结束。 事务撤消ROLLBACK(回滚) 指系统将该事务对数据库的所有已完成的更新操作全部撤消,恢复到事务开始前的一致的状态。,在SQL语言对数据库的操作中,一般都是按照用户或应用程序所规定的事务流程顺序执行,直到遇到下列情况之一为止: 执行COMMIT语句:说明对数据库的所有操作都已存入数据库中。COMMIT语句自动结束SQL的事务,并开始新的事务。 执行ROLLBACK语句:说明要撤消对事务开始后的所有对数据库的操作,并且使数据库回滚到事务开始之前的一致性的状态。 程序正常结束:这种情况说明对数据库的所有修改已存入数据库中。 程序被非常终止:说明对数据库的所有改变被撤消,数据库回滚到原来一致性状态。,说明:在执行一个完整的事务处理时,应该设定事务的管理子句。 如对上例的购买事务,应为: UPDATE 库存表 SET 库存量库存量-10 WHERE 商品代码K01 UPDATE 进账表 SET 金额金额200.00 WHERE 账号0027-654321 COMMIT;,并发控制,在多用户的数据库系统中,多个事务交迭地执行,称为并发处理。 并发处理可能会导致数据完整性与一致性方面的问题,如丢失更新、读出的是未提交的数据、非一致检索的问题等。 DBMS系统必须对这种并发操作提供一定的控制以防止它们彼此干扰,从而保证数据库的正确性不被破坏,DBMS所提供的这种处理就是并发控制。,并发处理产生的三种不一致性,丢失数据 读未提交数据 不一致性检索,丢失数据 【例】假设当前某商品S1的在库数量是200,现在有两个并发事务T1和T2都将更新库存中的数量,T1是采购入库事务,T2是卖出出库事务,即,如上表所示,在正常情况下这些事务的执行顺序和正确的结果,正确的最后执行结果应该是520。,在此表中,由于事务T1和T2是交替执行的,在将更新的结果写回数据库时,T1写入后马上由T2写入它所计算出的值,此时最后数据库中的结果是120,与上表中所得出的结果是完全不同的。 因此,如果对数据库更新时的并发事务不加以控制,将会出现大量的不可预期的错误结果!,读未提交数据 当两个事务T1和T2并发执行时,在T1对数据库更新的结果没有提交之前,T2使用了T1的结果,如果在T2读取数据之后T1又撤消事务,就可能引起错误。 读未提交数据产生的根源是违反了事务的隔离性。,仍以上述实例来讨论。 假定事务T1在增加了400个商品后,在没有提交之前撤消了这个操作,此时事务T2将从原来的库存数量200中减去80,得到的结果应该是120,其操作顺序和结果如下表所示。,当T1和T2的交替执行步骤如上表时,T2使用了T1未提交的数据,从而产生了错误数据520。 我们把读出的这种未提交的数据称为废数据或者脏数据。,不一致性检索 一个事务可能对同一个数据连续读两次,然而事务的并发执行可能导致在两次读之间插入了另一个更新事务,这样会使前一个事务的两次读出的同一个数据值不一致,这就是不一致检索问题。 由于事务很可能读某些变化之前或变化之后的数据,就可能产生不一致性的结果。,封 锁,封锁 在事务需要对特定数据对象进行操作时,事务通过向系统请求对它所希望的数据对象加锁,以确保它不被非预期地改变。 封锁的类型 共享锁(Shared LockSL) 排它锁(Exclusive LockXL),共享锁(Shared LockSL) 也称读锁。 如果事务对数据对象加上了共享锁,则其他事务只能对X再加共享锁,不能加排它锁,从而保证了其他事务可以读,但在T释放X上的锁之前不能对作任何修改。,排它锁(Shared LockSL) 也称写锁。 如果事务T对数据对象X加上了排它锁,则只允许事务T独占数据项X,其他任何事务都不能对X施加任何类型的锁,直到事务T释放X上的锁为止。通过排它锁可以有效地避免其他事务读取不一致的数据。,锁的相容矩阵,锁的粒度 以粒度来描述封锁的数据单元大小。 封锁的单元可以是逻辑单元,也可以是物理单元。 在关系数据库中,封锁的对象可以是数据库、表、记录以及字段等逻辑单元,也可以是页、块等物理单元。 封锁对象的大小称为封锁的粒度 。,活锁与死锁 在并发事务处理过程中,由于锁会使一事务处于等待状态而调度其他事务处理,因此该事务可能会因优先级低而永远等待下去,这种现象称为活锁。 两个以上事务循环等待被同组中另一事务锁住的数据单元的情形称为死锁 。,数据库的备份与恢复,故障的类型 事务日志 恢复 数据的转储,故障的类型 事务故障:由程序执行错误而引起事务的非预计的、异常的终止。它发生在单个事务的局部范围内,实际上就是程序故障。 系统故障:指系统停止或错误运行,从而要重新启动系统。 介质故障:外存设备故障。,事务日志 日志文件可以是磁带或磁盘数据集。事务记录包含了对数据库处理的事务的基本信息 。 当DBMS执行更新数据库的操作事务时,它要同时更新事务日志。 事务日志本身也是一个数据库,DBMS完全可以像管理其他数据库一样管理事务日志。,恢复 恢复指使数据库从一种状态恢复到原来一致性状态。 包括事务恢
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。