计算机用户鉴定标识方法是,数据库第八章_西华师范大学:数据库系统概论(三套)_ppt_大学课件预览_高等教育资讯网...

第八章 数据库保护

数据保护主要包括:数据的安全性、完整性、并发控制和数据

库恢复。

8.1 安 全 性

数据库的安全性是指保护数据库以防止不合法的使用所造成的

数据泄露、更改或破坏。系统安全保护措施是否有效是数据库系统

的主要性能指标之一。

用户 DBMS OS DB

用户标识和鉴定

8.1.1 安全性控制的一般方法

存取控制 操作系统安全保护 密码存储

图 8-1

一, 用户标识和鉴定

1,用一个户用名或者用户标识符号来标明用户身份,

2,口令 (Password).

3,计算结果,

二,存取控制

1.用户权限

2,与数据无关的授权定义

用户名 数据对象名 允许的操作类型

WANGPIN 关系 S SELECT

ZHANGMIN 关系 S UPDATE

ZHANGMIN 关系 C ALL

ZHANGMIN SC.G UPDATE

ZHANGMIN SC.S# SELECT

ZHANGMIN SC.C# SELECT

…… …… ……

表 8-2 一个可能的授权定义表的形式

3.依赖于数据对象的内容的授权

用户名 数据对象名 允许的操作类型 存取谓词

WANGPIN 关系 S SELECT SD=‘CS’

ZHANGMIN 关系 S UPDATE SN=‘ZHANGMIN’

ZHANGMIN 关系 C ALL 空

…… …… …… ……

表 8-3

8.1.2 两个系统的安全性方法

一, DBTG 系统

DBTG系统向用户提供了子模式,所有用户程序通过子模式

存取数据库数据。由于子模式只是模式的一部分,所以它自动地将

存取的对象限制在一定范围内,从而提供了安全性。

除开用子模式外,DBTG系统还提供了一整套以存取控制锁与

存取控制码为基础的安全设施。

1,存取控制锁子句格式

ACCESS CONTROL LOCK [FOR || 某些 DML 语句 || ]IS

literal-1 literal-2

lock-name-1 OR lock-name-2 ……

PROCEDURE db-proc-1 PROCEDURE db-proc-2

2,有关说明:

(1).格式中的 DML语句按条目而异。如:

①对于域来说 DML语句为 READY;

②对于记录则 DML语句为 STORY;

③对于系则 DML语句为 CONNECT,DISCONNECT。

(2),LOCK 有三种形式

3.存取控制码的作用

KEY值是在用户程序中给出的,

如在模式中对记录 S有如下规定,

RECORD NAME IS S.

…..

ACCECC CONTROL LOCK FOR ERASE IS ‘ENRMT’.

…….

那么在用户程序中就要提供相同的 KEY值,

PROCEDURE DIVISION.

DECLARATIVE S

……USE FOR ACCESS CONTROL ON ERASE FOR S.

MOVE ‘ENRMT’ TO DB-ACCESS-CONTROL-KEY

END DECLARATIVE S.

……

MOVE ‘S5’ TO SNO IN S.

FIND ANY S,

ERASE S

……

二, QBE系统

QBE系统可授予用户四种权限,即插入 (I)、删除 (D)、更新 (U)和

检索 (P).系统同样用表格的形式规定安全性约束条件,某一关系的所

有者在关系框架中输入一个元组,

1,授权格式,

I, AUTR (), I,

2.举例,

a,将检索关系 S的权限授予用户 WP.

S S# SN SA SD

I.AUTR(P.).WP I,N A M D

b,将对关系 S的四种存取权限授予用户 WP.

S S# SN SA SD

I.AUTR.WP I,N A M D

SC S# C# G

I.AUTR(P.),Z I,Z CZ GZ

c,任意一个学生可以读 SC关系中关于自己的元组,

d,用户可以插入成绩在 90分以上的 SC元组,

SC S# C# G

I.AUTR(I.),WP I,N C >90

8.2 完 整 性

数据库的完整性是指数据的正确性和相容性,

8.2.1 完整性约束条件

一,值的约束和结构约束

1.关于对数据值的约束

这类约束条件是指对数据取值类型、范围、精度等的规定。

2.关于数据之间联系的约束

同一关系的不同属性之间可以有一定的联系,从而应满足一定

的约束条件, 不同的关系之间也可以有联系,因而不同关系的属性之

间也可满足一定的约束条件,

二, 静态约束和动态约束

1.静态约束

2.动态约束

三, 立即执行约束和延时执行约束

1.立即执行约束

2.延时执行约束

完整性的实现应包括两个方面,一是系统要提供定义完整性约束

条件的功能,二是提供检查完整性约束条件的方法,

8.2.2 两个系统的完整性方法

一, QBE系统

1,定义关系 S中各属性值的类型、长度,定义关系的码是哪个

(些)属性:

S S# SN SD

I,TYPE,I.

I,LENGTH,I.

I,KEY,I.

CHAR

5

K

CHAR

20

NK

CHAR

15

NK

图 8-6

2,对于其它的约束条件则在关系名下输入,

I,CONSTR () I.

条件表可以包括 I.(插入 ),D.(删除 ),U.(更新 )中的任何一个或全部,

3.举例

(1),在执行插入、更新操作时要保证所有学生年龄不小于 15岁,

S S# SN SA SD

I,CONSTR( I.U.) I,≥15

(2),所插入的学生选课元组中学生所选的课程必须为学校开设

的课程,

SC S# C# G

I,CONSTR( I.) I,ALL.CX

C C# CN PC#

ALL.CX

图 8-7

图 8-8

二, ORACLE 系统

ORACLE系统中实现完整性控制的两个途径

1,字段的有效性说明

2,定义触发器

(1)触发器的三个级别

(2)触发的五种事件

①,进入时

②,查询

③,修改

④,退出

⑤,按键

(3),触发器中所用的 SELECT语句格式

SELECT 目标列

[INTO,[块名,]字段 ]

FROM 表名

[WHERE 子句 ]

[GROUP BY 子句 ]

比标准的 SELECT语句有两点扩充,

例 1,每当在学生选课 SC表中加入一个记录时,保证 C#与课程表

C中的某个 C#相同,S#与学生表 S中的某个 S#相同,

在 SC表对应的块上定义一个 pre-insert触发器,

SELECT ‘X’

FROM S,C

WHERE S.S# =:SC.S# AND C.C# =:SC.C#;

例 2,只能删除没有选课的学生,

在 S表对应的块上定义一个 pre-delete触发器,

SELECT ‘X’

FROM SC

WHERE SC.S# =:S.S#

例 3,计算机系的学生年龄在 16岁到 25岁之间,

在 S表对应块的年龄字段上定义一个 post-change触发器,

SELECT ‘X’

FROM DUAL

WHERE,S.SD =‘CS’ AND,S.SA BETWEEN 16 AND 25;

8.3 并 发 控 制

8.3.1 基本概念

一, 事务的概念

二, 数据一致性级别的概念

T1 T2 T1 T2 T1 T2

① 读 A=16

③ A=A-1

写回 A=15

读 A=16

A=A-1

写回 A=15

① 读 A=50

读 B=100

求和 =150

③ 读 A=50

读 B=200

求和 =250

读 B=100

求 B=B*2

写回 B

① 读 C=100

C=C*2

写回 C

ROLLBACK

C恢复为 100

读 C=200

(a) 丢失修改 (b) 不能重复读 (c) 读脏数据

图 8-10

8.3.2 封锁 (Locking)

一,基本的封锁类型

1.排它锁 (Exclusive locks),简记为 X锁

2.共享锁 (Share locks),简记为 S锁

可以用相容矩阵 (图 8-11)来表示这些控制方式,

T1 T2 X S —

X N N Y

S N Y Y

— Y Y Y

图 8-11 封锁类型的相容矩阵

二,利用封锁机制解决事务并发操作带来的相关问题

1.封锁机制执行并发控制时的约定

(1).事务 T在读、写数据对象 R时首先要发出 Slock或 Xlock请求,

事务 T获得所要的锁后才能读、写 R.

(2).事务 T结束时才释放锁,

2.利用封锁机制解决图 8-10中的三个问题,(图 8-12)

三,建立不同的约定,形成不同级别的封锁协议

X锁 S锁 一致性保证

不丢失

修改

事务可

恢复

不读

‘脏’

数据

可重复

1 √ √ √

2 √ √ √ √ √

3 √ √ √ √ √ √

表 8-5 不同级别的封锁协议

四,封锁尺度 (granularity)

8.3.3 活锁和死锁

一,活锁产生的原因和解决方法

1.活锁产生的原因

2.避免活锁的方法

二,产生死锁的原因及解决方法

1.产生死锁的原因

2.解决死锁的方法

(1).要求每个事务一次就将所有要使用的数据全部加锁,否则

就不能执行,

(2).预先规定一个封锁顺序,所有的事务都必须按这个顺序对

数据执行封锁,

(3).诊断死锁,解除死锁,

注意时间

8.3.4 可 串 行 性

计算机系统对并行操作的调度是随机的,不同的调度会

产生不同的结果,哪个结果是正确的呢?

事务 T1,读 B; A=B+1; 写回 A;

事务 T2,读 A; B=A+1; 写回 B;

设 A,B初值均为 2,

按 T1-T2次序串行的执行它们时,结果是 A=3,B=4.

若按 T2-T1次序串行的执行它们时,结果是 A=4,B=3.

1.串行调度

2,可串行化

8.3.5 两段锁协议

一,基本概念

二, 两段锁协议规定所有的事务应遵循的规则,

1.在对任何数据进行读写之前,事务首先要获得对该数据的封锁,

2,在释放一个封锁之后,事务不在获得任何其他封锁,

例如, T1的封锁序列是,

S lock A…S lock B…X lock C…Un lock B…Un lock A…Un lock C;

T2的封锁序列是,

S lock A…Un lock A…S lock B…X lock C…Un lock C…Un lock B;

定理, 若所有事务均遵守两段协议,则这些事务的所有

交叉调度都是可串行化的,

8.4 恢 复

8.4.1 故障的种类

一,事务内部的故障

事务故障意味着事务没有达到预期的终点,因此数据

库可能处于不正确状态,系统就要滚回此事务,即撤销该事

务已经作出的任何对数据库的修改,使得该事务好象根本

没有启动一样,

二,系统范围内的故障

三,介质故障

四,计算机病毒

8.4.2 转储和恢复

转储是数据库恢复中采用的基本技术。所谓转储,即 DBA定期

将数据库复制的磁带或另一个磁盘上保存起来的过程。

一、静态转储

二、动态转储

8.4.3 日志文件

日志文件是用来记录对数据库每次更新活动的文件,

一, 登记日志文件

“先写日志文件”,然后写数据库的原则,

二, 事务恢复

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值