贵州大学计算机研究生复试数据库系知识点整理归纳 下载本文

把指定对象的指定操作权限从指定用户处收回。 例:把用户U4修改学生学号的权限收回 REVOKE UPDATE(Sno) ON TABLE Student FROM U4;

例:收回所有用户对表SC的查询权限 REVOKE SELECT ON TABLE SC FROM PUBLIC;

例:把用户U5对SC表的INSERT权限收回 REVOKE INSERT ON TABLE SC FROM U5 CASCADE ;(缺省是RESTRICT)

将用户U5的INSERT权限收回的时候必须级联(CASCADE)收回,因为U5将SC的INSERT权限授予U6,U6又将其授予U7,CASCADE系统只收回直接或间接从U5处获得的权限。

Grant 和Revoke向用户授予或收回对数据的操作权限 3、创建数据库模式的权限 :DBA在创建用户时实现 CREATE USER语句格式

CREATE USER [WITH][DBA | RESOURCE | CONNECT]

拥有DBA权限的用户是系统中的超级用户;只有系统的超级用户才有权创建新的数据库用户;如果没有指定创建的新用户的权限,默认该用户拥有CONNECT权限,只能登录数据库.。

5、统计数据库存在何种特殊安全性

第五章:数据库的完整性

1、什么数据库完整性与数据库安全性的区别和联系

数据完整性:数据的正确性和相容性。

数据库的完整性和完全性是两个不同的概念,但他们有一定联系。 前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出所造成的无效操作和错误结果。

21

后者是保护数据库,防止被恶意破坏和非法存储。 也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不符合语义的数据。

2、数据模型中完整性约束条件的概念,RDBMS的完整性控制机制应具有的功能

完整性约束条件:数据库中的数据所应满足的语义约束条件。 RDBMS的完整性控制机制应具有3个方面的功能: 1、 定义功能,即提供定义完整性约束条件的机制。

2、 检查功能,即检查用户所发出的操作请求是否违背完整性约束条件。

3、 违约反映,如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的

措施来保证数据的完整性。

3、用SQL实现完整性控制的方法

4、RDBMS如何实现参照完整性

RDBMS在现实参照完整性时需要考虑可能破坏参照完整性的各种情况,以及用户违约后的处理策略。

可能破坏参照完整性的4种情况:在参照关系中插入元祖、修改外码值时可能破坏参照完整性;在删除被参照表的元组、修改主码值时可能破坏参照完整性。

5、触发器的概念

触发器(Trigger)是用户定义在关系表上的一类由事件驱动的特殊过程,有时也叫 (Event-Condition-Action Rule)或ECA规则。

一旦定义,任何用户对表的增删改,均由服务器自动激活触发器,进行集中的完整性控制;可以进行更为复杂的检查和操作,具有更精细和更强大的数据控制能力。

目的:实现由主键和外键所不能保证的参照完整性和数据一致性,定义更复杂的约束和业务规则,可采用触发器。

1、定义触发器

CREATE TRIGGER语法格式

CREATE TRIGGER <触发器名>

{BEFORE | AFTER} <触发事件(INSERT、UPDATE、DELETE )> ON <表名>

FOR EACH {ROW | STATEMENT} [WHEN <触发条件>] <触发动作体>

CREATE TRIGGER 必须是批处理中的第一条语句,并且只能应用于一个表。 触发器只能在当前的数据库中创建,但是可以引用当前数据库的外部对象。

定义触发器的语法说明: 1. 创建者:表的拥有者

2. 触发器名:表名和触发器必须在同一架构下 3. 表名:触发器的目标表

4. 触发事件:INSERT、DELETE、UPDATE

22

触发动作体与触发事件之间的关系:AFTER 、BEFORE 、INSTEAD OF,默认是AFTER 5.触发器类型:依照触发动作的间隔尺寸,行级触发器(FOR EACH ROW):触发动作体的执行次数根据目标表的行数决定;语句级触发器(FOR EACH STATEMENT):触发动作体只执行一次。

6. 触发条件:触发器激活(触发事件发生)后,如触发条件为真,触发动作体才会执行,省略WHEN触发条件,触发动作体在触发器激活后立即执行。

7. 触发动作体:触发动作体可以是一个匿名PL/SQL( Transact-SQL)过程块,也可以是对已创建存储过程的调用。如果触发动作体执行失败,激活触发器的事件会终止,目标表不发生变化。

8、存储过程(Stored Procedure):是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它 。

例:定义一个BEFORE行级触发器,为教师表Teacher定义完整性规则“教授的工资不得低于4000元,如果低于4000元,自动改为4000元”。

CREATE TRIGGER Insert_Or_Update_Sal

BEFORE INSERT OR UPDATE ON Teacher /*触发事件是插入或更新操作*/

FOR EACH ROW /*行级触发器*/

AS BEGIN /*定义触发动作体,是PL/SQL过程块*/ IF (new.Job='教授') AND (new.Sal < 4000) THEN new.Sal :=4000; END IF;

END;

例:定义AFTER行级触发器,当教师表Teacher的工资发生变化后就自动在工资变化表Sal_log中增加一条相应记录

首先建立工资变化表Sal_log CREATE TABLE Sal_log

(Eno NUMERIC(4) references teacher(eno), Sal NUMERIC(7,2), Username char(10), Date TIMESTAMP ); 2、激活触发器

一个数据表上可能定义了多个触发器,同一个表上的多个触发器激活时遵循如下的执行顺序:(1) 执行该表上的BEFORE触发器。(2) 激活触发器的SQL语句。(3) 执行该表上的AFTER触发器。

例:当执行修改某个教师工资的SQL语句,激活上述定义的触发器 UPDATE Teacher SET Sal=800 WHERE Ename='陈平'; 执行顺序是:

执行触发器Insert_Or_Update_Sal

执行SQL语句“UPDATE Teacher SET Sal=800 WHERE Ename='陈平';” 执行触发器Insert_Sal; 执行触发器Update_Sal

3、删除触发器 DROP TRIGGER <触发器名> ON <表名>;

触发器必须是一个已经创建的触发器,并且只能由具有相应权限的用户删除

23

例:删除教师表Teacher上的触发器Insert_Sal DROP TRIGGER Insert_Sal ON Teacher;

第六章:关系数据理论

1、为何要提出关系数据库规范化,即规范化理论是为了解决关系数据库中什么问题而引入的?

用来改造关系模式。通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。

2、函数依赖的基本概念,码(包括超码,主码,候选码,外码)的基本概念

1、函数依赖:设R(U)是一个属性集U上的关系模式,X和Y是U的子集, 若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称 “X函数确定Y” 或 “Y函数依赖于X”,记作X→Y。

所谓函数依赖是指关系中属性或属性组的值可以决定其它属性的值,设R(U)是属性集U上的关系模式,X、Y是U的子集:

如果X和Y之间是1:1关系(一对一关系),如学校和校长之间就是1:1关系,则存在函数依赖X → Y和Y →X。

如果X和Y之间是1:n关系(一对多关系),如年龄和姓名之间就是1:n关系,则存在函数依赖Y → X。

如果X和Y之间是m:n关系(多对多关系),如学生和课程之间就是m:n关系,则X和Y之间不存在函数依赖。

在关系模式R(U)中,对于U的子集X和Y,如果X→Y,但,则称X→Y是非平凡的函数依赖;若X→Y,但则称X→Y是平凡的函数依赖。

例:在关系SC(Sno, Cno, Grade)中,非平凡函数依赖: (Sno, Cno) → Grade; 平凡函数依赖: (Sno, Cno) → Sno (Sno, Cno) → Cno

若X→Y,则X称为这个函数依赖的决定属性组,也称为决定因素(Determinant)。 2、 完全函数依赖: 在R(U)中,如果X→Y,并且对于X的任何一个真子集X’,都有X’ Y, 则称Y对X完全函数依赖,记作

3、部分函数依赖:若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作

例:中 (Sno,Cno)→Grade是完全函数依赖,(Sno,Cno)→Sdept是部分函数依赖 ∵Sno →Sdept成立,且Sno是(Sno,Cno)的真子集。 当存在部分依赖时,就会产生数据冗余。 4、传递函数依赖:在R(U)中,如果X→Y,(Y传递函数依赖,记为:

X) ,Y

X ,Y→Z,Z

Y,则称Z对X

注: 如果Y→X, 即X←→Y,则Z直接依赖于X。 例: 在关系Std(Sno, Sname,Sdept, Mname)中,有: Sno → Sdept,Sdept → Mname Mname传递函数依赖于Sno

5、侯选码:设K为R中的属性或属性组,若K

U (每个属性), 则K称为R

24