数据库系统概论 第四版 知识点整理(4)

2020-06-16 21:36

WITH CHECK OPTION:表示对视图进行UPDATE,INSERT和DELETE操作时要保证更新、插入或删除的行满足视图定义中的谓词条件(即子查询中的条件表达式)。 组成视图的属性列名:全部省略或全部指定,但在下列三种情况下必须明确指定组成视图的所有列名:

某个目标列不是单纯的属性名,而是聚集函数或列表达式;

多表连接时选出了几个同名列作为视图的字段; 需要在视图中为某个列启用新的名字。

RDBMS执行CREATE VIEW语句时只是把视图定义存入数据字典,并不执行其中的SELECT语句。在对视图查询时,按视图的定义从基本表中将数据查出。

行列子集视图:从单个基本表导出 ,只是去掉了基本表的某些行和某些列保留了主码 例:建立信息系学生的视图 CREATE VIEW IS_Student AS

SELECT Sno,Sname,Sage FROM Student

WHERE Sdept= ?IS‘;

WITH CHECK OPTION 例:建立信息系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有信息系的学生

CREATE VIEW IS_Student AS

SELECT Sno,Sname,Sage

FROM Student

WHERE Sdept= 'IS'

WITH CHECK OPTION;

加上了WITH CHECK OPTION子句:RDBMS对IS_Student视图的更新操作:修改操作:自动加上Sdept= 'IS'的条件;删除操作:自动加上Sdept= 'IS'的条件;插入操作:自动检查Sdept属性值是否为'IS' 。如果不是,则拒绝该插入操作。如果没有提供Sdept属性值,则自动定义Sdept为'IS'。 基于多个基表的视图 例:建立信息系选修了1号课程的学生视图

CREATE VIEW IS_S1(Sno,Sname,Grade) AS

SELECT Student.Sno,Sname,Grade FROM Student,SC

WHERE Sdept= 'IS' AND

Student.Sno=SC.Sno AND SC.Cno= '1';

基于视图的视图 例:建立信息系选修了1号课程且成绩在90分以上的学生的视图 CREATE VIEW IS_S2 AS

SELECT Sno,Sname,Grade FROM IS_S1

WHERE Grade>=90;

由于视图中的数据不会实际存储,所以定义视图时可根据应用的需要,设置一些派生属性列或虚拟列,以便于查询和统计。

以 SELECT * 方式创建的视图可扩充性差,应尽可能避免 。

缺点:修改基表Student的结构后,Student表与F_Student视图的映象关系被破坏,导致该视图不能正确工作。

删除视图DROP VIEW <视图名>;

该语句从数据字典中删除指定的视图定义。如果该视图上还导出了其他视图,使用CASCADE级联删除语句,把该视图和由它导出的所有视图一起删除 。删除基表时,由该基表导出的所有视图定义都必须显式地使用DROP VIEW语句删除。

例:删除视图BT_S:

DROP VIEW BT_S; 删除视图IS_S1:拒绝执行

级联删除:DROP VIEW IS_S1 CASCADE;

(2) 查询视图:查询视图与查询基本表相同,视图定义后,就可以像对待基本表一样对视图进行查询(SELECT)操作。

视图消解法(View Resolution)进行有效性检查,检查查询的表、视图等是否存在。如果存在,则从数据字典中取出视图的定义 ;转换成等价的对基本表的查询,把视图定义中的子查询与用户的查询结合起来;执行修正后的查询。

例:在信息系学生的视图中找出年龄小于20岁的学生

SELECT Sno,Sage FROM IS_Student WHERE Sage<20; 视图消解转换后的查询语句为: SELECT Sno,Sage

FROM Student

WHERE Sdept= 'IS' AND Sage<20;

例:在S_G视图中查询平均成绩在90分以上的学生学号和平均成绩 SELECT * FROM S_G

WHERE Gavg>=90;

S_G视图的子查询定义: CREATE VIEW S_G (Sno,Gavg) AS SELECT Sno,AVG(Grade) FROM SC

GROUP BY Sno;

(3) 更新视图

DBMS实现视图更新的方法:转换为对基本表的更新。视图消解法(View Resolution)。 只有对成为“可更新”视图才能进行更新操作。

SQL2对“可更新”视图给出正式定义:从关系R选出某些属性(用select 而不是 select distinct)定义的视图,R本身可以是可更新的视图;Where中不能嵌套涉及R的子查询;Select必须包括足够多的属性,所有not null的属性必须包括。

对于视图元组的更新操作(INSERT、DELETE、UPDATA),有以下三条规则:

如果一个视图是从多个基本表使用联接操作导出的,那么不允许对这个视图执行更新操作。

如果在导出视图的过程中,使用了分组和聚集函数操作,也不允许对这个视图执行更新操作。 行列子集视图可以执行更新操作。

在SQL2中,允许更新的视图在定义时,必须加上“WITH CHECK OPTION”短语。DBMS在更新视图时会进行检查,防止用户通过视图对不属于视图范围内的基本表数据进行更新。

例:将信息系学生视图IS_Student中学号200215122的学生姓名改为“刘辰”。 UPDATE IS_Student SET Sname= '刘辰'

WHERE Sno= ' 200215122 '; 转换后的语句: UPDATE Student SET Sname= '刘辰'

WHERE Sno= ' 200215122 ' AND Sdept= 'IS';

例:向信息系学生视图IS_S中插入一个新的学生记录:200215129,赵新,20岁 INSERT

INTO IS_Student

VALUES(?95029‘,?赵新‘,20); 转换为对基本表的更新:

INSERT

INTO Student(Sno,Sname,Sage,Sdept) VALUES(?200215129 ','赵新',20,'IS' );

例:删除信息系学生视图IS_Student中学号为200215129的记录 DELETE

FROM IS_Student

WHERE Sno= ' 200215129 '; 转换为对基本表的更新: DELETE

FROM Student

WHERE Sno= ' 200215129 ' AND Sdept= 'IS'; 更新视图的限制:一些视图是不可更新的,因为对这些视图的更新不能唯一地有意义地转换成对相应基本表的更新。对其他类型视图的更新不同系统有不同限制: (1) 若视图是由两个以上基本表导出的,则此视图不允许更新

(2) 若视图的字段来自字段表达式或常数,则不允许对此视图执行INSERT和UPDATE操作,但允许执行DELETE操作。

(3) 若视图的字段来自集函数,则此视图不允许更新。

(4) 若视图定义中含有GROUP BY子句,则此视图不允许更新。 (5) 若视图定义中含有DISTINCT短语,则此视图不允许更新。

(6) 若视图定义中有嵌套查询,并且内层查询的FROM子句中涉及的表也是导出该视图的基本表,则此视图不允许更新。

(7) 一个不允许更新的视图上定义的视图也不允许更新 (4) 视图的作用

1. 视图能够简化用户的操作,聚焦于所关心的数据上。 2. 视图使用户能以多种角度看待同一数据,增加灵活性 。 3. 视图对重构数据库提供了一定程度的逻辑独立性。

4. 视图能够对机密数据提供安全保护。 5. 适当的利用视图可以更清晰的表达查询。

3、用SQL实现复杂的查询

4、什么是基本表?什么是视图?两者的区别和联系是什么?为何要引入视图?

基本表:是独立存在的表。在SQL中,一个关系对应于一个表。

视图:是从一个或多个基本表所导出的表。视图本身并不独立存储在数据库中,是一个虚表,即数据库中之存放视图的定义而不存放其所对应的数据,这些数据仍然存放在导出的视图的基本表中。视图在概念上与基本表等同,用户可以像使用基本表那样使用视图,可以在视图上再定义视图。

为何要引入视图:

1. 视图能够简化用户的操作,聚焦于所关心的数据上。 2. 视图使用户能以多种角度看待同一数据,增加灵活性 。 3. 视图对重构数据库提供了一定程度的逻辑独立性。 4. 视图能够对机密数据提供安全保护。

5. 适当的利用视图可以更清晰的表达查询。

第四章:数据库的安全性

1、什么数据库安全性

数据库的安全性是指保护数据库以防止非法使用所造成的数据泄漏、更改或破坏。

2、数据库安全控制的常用方法和技术

1、用户标识和鉴别:由系统提供一定的方式,让用户表示自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后系统才能提供使用权。

2、存取控制:通过用户权限定义和合法权限检查确保只有拥有合法权限的用户才能访问数据库,所有未授权人员均无法存取数据。

3、视图机制:为不同的用户定义视图,通过视图机制把要保密的数据对无权限用户隐藏起来,从而自动地对数据提供一定程度的安全保护。

4、审计:建立审计日志,把用户对数据库的所有操作自动记录下来并放入审计日志中。DBA可以利用审计跟踪信息来重现导致数据库现状的一系列事件,找出非法存取数据的人、时间和内容等。

5、数据加密:对所存储和传输的数据进行加密处理,从而使得不掌握解密算法的人无法获知数据。

3、什么是数据库中的自主存取控制方法和强制存取控制方法?为什么强制存取控制提供了更高级别的安全性?

自主存取控制方法:定义各个用户对不同数据对象的存取权限。当用户要访问数据库时,首先要检查其存取权限,以防止非法用户对数据库进行存取。

“自主存取控制”中“自主”的含义:用户可以将自己所拥有的存取权限“自主”地授予他人,即用户具有一定的“自主”权。

强制存取控制方法:每一个数据对象被(强制地)标以一定的加密级别,每位用户也被

(强制地)授予某一级别的许可证。系统规定只有具有某一许可证级别的用户才能存取加密级别的数据对象。

强制存取控制(MAC)是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据,从而提高了更高级别的安全性。

4、自主存取控制语句:授权与收回语句。

GRANT 语句和 REVOKE 语句实现。 关系数据库系统中存取控制权限:

1、GRANT(授权)

GRANT语句的一般格式:

GRANT <权限>[,<权限>]...

ON <对象类型> <对象名> ,[<对象类型> <对象名>]

TO <用户>[,<用户>]...

[WITH GRANT OPTION];

将对指定操作对象的指定操作权限授予指定的用户

发出GRANT:DBA,数据库对象创建者(即属主Owner),拥有该权限的用户 接受权限的用户 :一个或多个具体用户;PUBLIC(全体用户)。 例:把查询Student表权限授给用户U1 GRANT SELECT

ON TABLE Student TO U1;

例:把查询Student表和修改学生学号的权限授给用户U4

GRANT UPDATE(Sno), SELECT

ON TABLE Student

TO U4;

对属性列的授权时必须明确指出相应属性列名

2、REVOKE:授予的权限可以由DBA或其他授权者用REVOKE语句收回 REVOKE语句的一般格式为:

REVOKE <权限>[,<权限>]...

ON <对象类型> <对象名> >[,<对象类型> <对象名>] ? FROM <用户>[,<用户>]... >[CASCADE|RESTRICT];


数据库系统概论 第四版 知识点整理(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:大学英语(三)第2阶段测试题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: