本文整理了《数据库系统概论》一书中的要点,并以问答的形式展示出来。
部分章节还未整理,会持续更新。
提示:右侧导航栏有【目录】
如果对您有帮助,请点个赞加个关注呐。
一、绪论
1、解释下列定义
- 数据:描述事物的符号记录称为数据。
数据与其语义是不可分的。
数据是数据库管理的基本对象。 - 数据库:数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。
- 数据库管理系统(DBMS):计算机的基础软件。
- 数据库系统:数据库系统由数据库、数据库管理系统、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统。
2、数据库管理系统的主要功能
- 数据定义功能:数据定义语言
- 数据组织、存储和管理:如何实现数据之间的联系
- 数据操纵功能:数据操纵语言(增删查改)
- 数据库的事务管理和运行管理
- 数据库的建立和维护功能:数据库的转储、恢复功能
- 其它功能:安全性、完整性
3、什么是数据库?数据库有什么特点?
数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。
数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
4、产生经历的阶段
- 人工管理阶段
- 文件系统阶段
- 数据库系统阶段
5、数据库系统的特点
- 数据结构化
- 数据的共享性高,冗余度低,以扩充
- 数据独立性高。包括数据的物理独立性和数据的逻辑独立性
- 数据有DBMS同一管理和控制
6、数据模型的两大类
- 概念模型:又称信息模型,它是按照用户的观点来对数据和信息建模,主要用于数据库设计。
- 逻辑模型:按照计算机系统的观点对数据建模,主要用于数据管理系统的实现。
7、解释下列定义
- 实体:客观存在并可互相区别的事物称为实体。
- 属性:实体所具有的某一特性称为属性。
- 码:唯一标识实体的属性集称为码。
- 实体型:用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。
- 实体集:同一类型实体的集合称为实体集。
- 联系:实体之间的联系通常是指不同实体集之间的联系。实体之间的联系有一对一,一对多和多对多等多种类型。
8、常用的数据模型
- 层次模型
- 网状模型
- 关系模型
- 面向对象数据模型
- 对象关系数据模型
- 半结构化数据模型
9、什么是基本层次联系?
基本层次联系是指两个记录及其他们之间的一对多(或一对一)的联系。
10、关系模型的概念
关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。关系模型中数据的逻辑结构石一张二维表,它由行和列组成。
11、关系模型的优点
- 关系模型与格式化模型不同,它是建立在严格的数学概念的基础上的。
- 关系模型的概念单一,所以其数据结构简单、清晰、用户易懂易用。
- 关系模型的存取路径对用户透明,从而具有更高的数据独立性、更好的安全保密性,也简化了程序员的工作和数据开发建立的工作。
12、三级模式
- 模式:也称逻辑模型,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
- 外模式:也称子模式或用户模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
- 内模式:也称存储模式,一个数据库只有一个内模式,它是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。
- DDL:数据定义语言,用来定义数据库模式、外模式、内模式的语言。
- DML:数据操纵语言,用来对数据库中的数据进行查询、插入、删除和修改的语句。
13、二级映像
- 外模式/模式映像:
- 模式/内模式映像:
14、两种独立性,为什么数据库系统具有数据与程序的独立性?
- 数据与程序的物理独立性:当数据库的存储结构改变了,由数据库管理员对模式/内模式映像做相应改变,可以使模式保持不变,从而应用程序也不必改变,这就是物理独立性。
- 数据与程序的逻辑独立性:当数据的逻辑结构即模式改变时,由数据库管理员对各个外模式/模式的映像做相应改变,可以使外模式保持不变,从而应用程序不必修改,这就是逻辑独立性。
- 数据库管理系统在三级模式之间提供的两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。
15、使用数据库系统有什么好处?
使用数据库系统的好处是由数据库管理系统的特点或优点决定的。使用数据库系统的好处很多,例如,可以大大提高应用开发的效率,方便用户的使用,减轻数据库系统管理人员维护的负担,等等。既便于数据的集中管理,控制数据冗余,提高数据的利用率和一致性,又有利于应用程序的开发和维护。
16、试述文件系统与数据库系统的区别和联系。
文件系统与数据库系统的区别是:文件系统面向某一应用程序,共享性差,冗余度大,数据独立性差,记录内有结构,整体无结构,由应用程序自己控制。数据库系统面向现实世界,共享性高,冗余度小,具有较高的物理独立性和一定的逻辑独立性,整体结构化,用数据模型描述,由数据库管理系统提供数据的安全性、完整性、并发控制和恢复能力。
文件系统与数据库系统的联系是:文件系统与数据库系统都是计算机系统中管理数据的软件。解析文件系统是操作系统的重要组成部分;而 DBMS 是独立于操作系统的软件。但是 DBMS 是在操作系统的基础上实现的;数据库中数据的组织和存储是通过操作系统中的文件系统来实现的。
17、举出适合用文件系统而不是数据库系统的例子;再举出适合用数据库系统的应用例子。
- 适用于文件系统而不是数据库系统的应用例子数据的备份、软件或应用程序使用过程中的临时数据存储一般使用文件比较合适。早期功能比较简单、比较固定的应用系统也适合用文件系统。
- 适用于数据库系统而非文件系统的应用例子目前,几乎所有企业或部门的信息系统都以数据库系统为基础,都使用数据库。例如,一个工厂的管理信息系统(其中会包括许多子系统,如库存管理系统、物资采购系统、作业调度系统、设备管理系统、人事管理系统等),学校的学生管理系统,人事管理系统,图书馆的图书管理系统,等等,都适合用数据库系统。
18、举出适合用文件系统而不是数据库系统的例子;再举出适合用数据库系统的应用例子。
- 适用于文件系统而不是数据库系统的应用例子数据的备份、软件或应用程序使用过程中的临时数据存储一般使用文件比较合适。早期功能比较简单、比较固定的应用系统也适合用文件系统。
- 适用于数据库系统而非文件系统的应用例子目前,几乎所有企业或部门的信息系统都以数据库系统为基础,都使用数据库。例如,一个工厂的管理信息系统(其中会包括许多子系统,如库存管理系统、物资采购系统、作业调度系统、设备管理系统、人事管理系统等),学校的学生管理系统,人事管理系统,图书馆的图书管理系统,等等,都适合用数据库系统。希望读者能举出自己了解的应用例子
19、什么是概念模型?试述概念模型的作用。
- 概念模型,也称信息模型,是按用户的观点来对数据和信息建模,主要用于数据库设计。
- 概念模型实际上是现实世界到机器世界的一个中间层次。概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员和用户之间进行交流的语言。
20、试述数据模型的概念、数据模型的作用和数据模型的三个要素。
数据模型是数据库中用来对现实世界进行抽象的工具,是数据库中用于提供信息表示和操作手段的形式构架。一般地讲,数据模型是严格定义的概念的集合。这些概念精确描述了系统的静态特性、动态特性和完整性约束条件。因此数据模型通常由数据结构、数据操作和完整性约束三部分组成。
- 数据结构:是所研究的对象类型的集合,是对系统静态特性的描述。
- 数据操作:是指对数据库中各种对象(型)的实例(值)允许进行的操作的集合,包括操作及有关的操作规则,是对系统动态特性的描述。
- 数据的约束条件:是一组完整性规则的集合。完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效、相容。解析数据模型是数据库系统中最重要的概念之一。必须通过 《 概论 》 的学习真正掌握数据模型的概念和作用。数据模型是数据库系统的基础。任何一个 DBMS 都以某一个数据模型为基础,或者说支持某一个数据模型。数据库系统中,模型有不同的层次。根据模型应用的不同目的,可以将模型分成两类或者说两个层次:一类是概念模型,是按用户的观点来对数据和信息建模,用于信息世界的建模,强调语义表达能力,概念简单清晰;另一类是数据模型,是按计算机系统的观点对数据建模,用于机器世界,人们可以用它定义、操纵数据库中的数据,一般需要有严格的形式化定义和一组严格定义了语法和语义的语言,并有一些规定和限制,便于在机器上实现。
21、试述网状模型的概念
满足下面两个条件的基本层次联系集合为网状模型。
- 允许一个以上的结点无双亲;
- 一个结点可以有多于一个的双亲。
22、试述网状、层次数据库的优缺点。
- 层次模型的优点主要有: ( l )模型简单,对具有一对多层次关系的部门描述非常自然、直观,容易理解,这是层次数据库的突出优点; ( 2 )用层次模型的应用系统性能好,特别是对于那些实体间联系是固定的且预先定义好的应用,采用层次模型来实现,其性能优于关系模型; ( 3 )层次数据模型提供了良好的完整性支持。
- 层次模型的缺点主要有: ( l )现实世界中很多联系是非层次性的,如多对多联系、一个结点具有多个双亲等,层次模型不能自然地表示这类联系,只能通过引入冗余数据或引入虚拟结点来解决; ( 2 )对插入和删除操作的限制比较多; ( 3 )查询子女结点必须通过双亲结点。
- 网状数据模型的优点主要有: ( l )能够更为直接地描述现实世界,如一个结点可以有多个双亲; ( 2 )具有良好的性能,存取效率较高。
- 网状数据模型的缺点主要有: ( l )结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越来越复杂,不利于最终用户掌握; ( 2 )其 DDL 、 DML 语言复杂,用户不容易使用。由于记录之间联系是通过存取路径实现的,应用程序在访问数据时必须选择适当的存取路径。因此,用户必须了解系统结构的细节,加重了编写应用程序的负担。
23、数据库管理员、系统分析员、数据库设计人员、应用程序员的职责是什么?
数据库管理员的职责:(1)决定数据库中的信息内容和结构;
(2)决定数据库的存储结构和存取策略;
(3)定义数据的安全性要求和完整性约束条件;
(4)监控数据库的使用和运行;
(5)数据库的改进和重组、重构。
系统分析员负责应用系统的需求分析和规范说明,系统分析员要和用户及 DBA 相结合,确定系统的硬件、软件配置,并参与数据库系统的概要设计。数据库设计人员负责数据库中数据的确定、数据库各级模式的设计。数据库设计人员必须参加用户需求调查和系统分析,然后进行数据库设计。在很多情况下,数据库设计人员就由数据库管理员担任。应用程序员负责设计和编写应用系统的程序模块,并进行调试和安装。
二、关系数据库
1、解释下列定义
- 域:是一组具有相同数据类型的值的集合
- 候选码:若关系中某一属性组的值能唯一标识一个元组,而其子集不能,则称该属性组为候选码。
- 主码:若关系有多个候选码,选择一个作为主码
- 主属性:候选码的诸属性称为主属性。
- 非主属性:(非码属性)不包含在任何候选码中的属性为非主属性。
- 全码:关系模式的所有属性是这个关系模式的候选码,称为全码。
2、关系有哪些类型?
- 基本关系(又称基本表或基表)
- 查询表
- 视图表
3、基本关系的6条性质
- 列是同质的,每一列中的分量都是同一属性的。
- 不同列可出自同一个域,称其中的每一列为一属性,不同属性要给予不同的属性名。
- 列的顺序无所谓。
- 任意两个元组的候选码不能取相同的值。
- 行的顺序无所谓。
- 分量必须取原子值,即每一个分量都必须是不可分的数据项。
4、关系模式
R(U,D,DOM,F)
- R为关系名
- U为组成该关系的属性名集合
- D为U中属性所来自的域
- DOM为属性向域的映像集合
- F为属性见的数据的依赖关系集合
5、什么是实体完整性?什么是参照完整性?
- 实体完整性:若属性A是基本关系R的主属性,则A不能为空值
- 参照完整性:若属性F是基本关系R的外码,它与基本关系S的主码K相对应,则对于R中每个元组在F上的值必须:①或者取空值;②或者等于S中某个元组的主码值(K)
- 用户定义的完整性
6、试述关系模型的三个组成部分。
关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。
7、试述关系数据语言的特点和分类。
关系数据语言可以分为三类:
- 关系代数语言。
- 关系演算语言:元组关系演算语言和域关系演算语言。
- SQL:具有关系代数和关系演算双重特点的语言。
这些关系数据语言的共同特点是,语言具有完备的表达能力,是非过程化的集合操作语言,功能强,能够嵌入高级语言中使用。
8、述关系模型的完整性规则。在参照完整性中,为什么外部码属性的值也可以为空?什么情况下才可以为空?
实体完整性规则是指若属性A是基本关系R的主属性,则属性A不能取空值。
若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值);或者等于S中某个元组的主码值。即属性F本身不是主属性,则可以取空值,否则不能取空值。
9、试述等值连接与自然连接的区别和联系。
连接运算符是“=”的连接运算称为等值连接。它是从关系R与S的广义笛卡尔积中选取A,B属性值相等的那些元组
自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。
**10、关系代数的基本运算有哪些 ? 如何用这些基本运算来表示其他运算? **
并、差、笛卡尔积、投影和选择5种运算为基本的运算。其他3种运算,即交、连接和除,均可以用这5种基本运算来表达。
11、关系代数
大题
三、SQL
SQL代码
1、试述SQL语言的特点。
答:
- 综合统一。 sQL 语言集数据定义语言 DDL 、数据操纵语言 DML 、数据控制语言 DCL 的功能于一体。
- 高度非过程化。用 sQL 语言进行数据操作,只要提出“做什么”,而无需指明“怎么做”,因此无需了解存取路径,存取路径的选择以及 sQL 语句的操作过程由系统自动完成。
- 面向集合的操作方式。 sQL 语言采用集合操作方式,不仅操作对象、查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。
- 以同一种语法结构提供两种使用方式。 sQL 语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机交互的使用方式;作为嵌入式语言,它能够嵌入到高级语言程序中,供程序员设计程序时使用。
- 语言简捷,易学易用。
2、什么是基本表?什么是视图?两者的区别和联系是什么?
基本表是本身独立存在的表,在 sQL 中一个关系就对应一个表。视图是从一个或几个基本表导出的表。视图本身不独立存储在数据库中,是一个虚表。即数据库中只存放视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中。视图在概念上与基本表等同,用户可以如同基本表那样使用视图,可以在视图上再定义视图。
3、试述视图的优点。
- 视图能够简化用户的操作;
- 视图使用户能以多种角度看待同一数据;
- 视图对重构数据库提供了一定程度的逻辑独立性;
- 视图能够对机密数据提供安全保护。
4、哪类视图是可以更新的?哪类视图是不可更新的?各举一例说明。
基本表的行列子集视图一般是可更新的。若视图的属性来自集合函数、表达式,则该视图肯定是不可以更新的。
5、所有的视图是否都可以更新?为什么?
不是。视图是不实际存储数据的虚表,因此对视图的更新,最终要转换为对基本表的更新。因为有些视图的更新不能惟一有意义地转换成对相应基本表的更新,所以,并不是所有的视图都是可更新的.
6、SQL代码示例
/*
一、模式
*/
--1.1 为用于Zhang创建一个模式Test
create schema Test authorization Zhang
--1.2 删除模式Test,cascade(级联) restrict(限制)
drop schema Test cascade
/*
二、基本表
*/
--2.1 定义一个学生表Student
create table Student
(Sno char(9) primary key, --主码
Sname char(20) unique, --值唯一
Sage smallint not null --不为空
foreign key(Sno) references SC(Scno) --外键
);
--2.2 修改基本表
alter table Student add Saddress char(6);
alter table Student add unique(Sno);
alter table Student alter column Sage int;
--2.3 删除表
drop table Student cascade; --若表上有视图,cascade会把视图也删掉,而restrict不会
/*
三、索引
*/
--3.1 建立索引
create unique index Stusno on Student(Sno);
create unique index SCno on SC(Sno ASC,Cno DESC);
--3.2 修改索引
alter index Stusno rename to Stusno2;
--3.3 删除索引
drop index Stusno;
/*
四、查找
*/
--4.1 简单查找
select Sno, Sname from Student; --选择sno、sname两列
select * from Student; --选择所有列
select Sname, 2021-Sage from Student; --(2021-sage)是一个计算式,会显示结果
select Sname NAME, lower(Sdept) DEPARTMENT from Student; --NAME为Sname的别名,lower(Sdept)显示小写字母
select distinct Sno from sc; --去重查找
--4.2 条件查找
select Sname from Student where Sdept='CS' and Sage<20;
select Sname from Student where Sage not between 15 and 20;
select Sname from Student where Sdept not in ('CS','MA');
select Sname from Student where Sdept is null;
--4.3 匹配查找
select Sname from Student where Sno like '2017413';
select Sname from Student where Sname like '_刘%'; -- '_'任意单个字符,'%'任意个字符
--4.4 排序
select Sname from Student order by Sno DESC; --DESC降序,ASC升序
--4.5 聚合函数
select count(*) from Student --查询学生总人数
select count(distinct Sno) from SC
select AVG(Grade) from SC where Cno='1' --课程1的平均成绩
select MAX(Grade) from SC where Cno='1'
select MIN(Grade) from SC where Cno='1'
select SUM(Grade) from SC where Cno='1'
select Sno, AVG(grade) from SC having AVG(grade)>=90 --聚合函数要用having,不能用where
--4.6 group by 分组
select Cno, count(Sno) from SC group by Cno; --按照Cno分组,统计每一个课程的学生数目
--4.7 等值连接与非等值连接
select Student.Sno, Sname, Sdept
from Student, SC
where Student.Sno=SC.Sno and SC.Cno='2';
--4.8 自身连接
select c1.Cno, c2.Cpno
from Course c1, Course c2
where c1.cpno=c2.cno;
--4.9 外连接
select Student.Scno, Sname, Cno
from Student left outer join SC on (Student.Sno=SC.Sno);
--4.10 多表连接
select Student.Sno, Sname, Sdept
from Student, Course, SC
where Student.Sno=SC.Sno and Course.Cno=SC.Cno;
--4.11 嵌套查询
select Sname from Student
where Sno in (select Sno from SC where Cno='2');
select Sname from Student
where Sdept=(select Sdept from Student where Sno='2');
select Sno from Student
where Sage>any(select Sage from Student where sdept='CS'); -- >any 大于子查询中的一个
select Sno from Student
where Sage>all(select Sage from Student where sdept='CS'); -- >all 大于子查询中的所有
--4.12 带有exists,子查询非空返回true,空返回false
select Sname from Student
where exists(select * from SC where Sno=Student.Sno and Cno='1');
--4.13 集合查询 union(并)、intersect(交)、except(差)
select Sno from SC where Cno='1' union select Sno from SC where Cno='2'
select Sno from SC where Cno='1' intersect select Sno from SC where Cno='2'
select Sno from SC where Cno='1' except select Sno from SC where Cno='2'
/*
五、视图
*/
--5.1 建立视图
create view IS_Student
as
select Sno,Sname,Sage from Student where sdept='IS'
with check option; --加上此句,后续对视图的一系列操作会自动加上sdept='IS'
--5.2 删除视图
drop view IS_Student;
drop view IS_S1 CASCADE; --如果从视图IS_S1中又导出其它视图,需要加上CASCADE
--5.3 更新视图
update IS_Student
set Sname = 'Tom'
where Sno='001';
insert into IS_Student
values('002',20,'IS');
四、数据库的安全性
1、什么是数据库的安全性?
数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。
2 .数据库安全性和计算机系统的安全性有什么关系?
安全性问题不是数据库系统所独有的,所有计算机系统都有这个问题。只是在数据库系统中大量数据集中存放,而且为许多最终用户直接共享,从而使安全性问题更为突出。
系统安全保护措施是否有效是数据库系统的主要指标之一。
数据库的安全性和计算机系统的安全性,包括操作系统、网络系统的安全性是紧密联系、相互支持的,
3、试述实现数据库安全性控制的常用方法和技术。
实现数据库安全性控制的常用方法和技术有:
- 用户标识和鉴别:该方法由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权。
- 存取控制:通过用户权限定义和合法权检查确保只有合法权限的用户访问数据库,所有未被授权的人员无法存取数据。例如CZ 级中的自主存取控制( DAC ) , Bl 级中的强制存取控制(MAC )。
- 视图机制:为不同的用户定义视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。
- 审计:建立审计日志,把用户对数据库的所有操作自动记录下来放入审计日志中,DBA 可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。
- 数据加密:对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容。
4、什么是数据库中的自主存取控制方法和强制存取控制方法?
自主存取控制方法:定义各个用户对不同数据对象的存取权限。当用户对数据库访问时首先检查用户的存取权限。防止不合法用户对数据库的存取。
强制存取控制方法:每一个数据对象被(强制地)标以一定的密级,每一个用户也被(强制地)授予某一个级别的许可证。系统规定只有具有某一许可证级别的用户才能存取某一个密级的数据对象。
5、SQL 语言中提供了哪些数据控制(自主存取控制)的语句?请试举几例说明它们的使用方法。
SQL 中的自主存取控制是通过GRANT语句和REVOKE语句来实现的。如:
GRANT SELECT , INSERT ON Student
TO 王平
WITH GRANT OPTION ;
就将Student 表的SELECT 和INSERT 权限授予了用户王平,后面的“WITH GRANT OPTION ”子句表示用户王平同时也获得了“授权”的权限,即可以把得到的权限继续授予其他用户。
REVOKE INSERT ON Student FROM 王平CASCADE ;
就将Student 表的INSERT 权限从用户王平处收回,选项CASCADE 表示,如果用户王平将Student 的INSERT 权限又转授给了其他用户,那么这些权限也将从其他用户处收回。
6、请用SQL的GRANT 和REVOKE语句(加上视图机制)完成以下授权定义或存取控制功能:
- 用户王明对两个表有SELECT 权力。
GRANT SELECT ON 职工,部门
TO 王明 - 用户李勇对两个表有INSERT 和DELETE 权力。
GRANT INSERT,DELETE ON 职工,部门
TO 李勇 - 每个职工只对自己的记录有SELECT 权力。
GRANT SELECT ON 职工
WHEN USER()=NAME
TO ALL; - 用户刘星对职工表有SELECT 权力,对工资字段具有更新权力。
GRANT SELECT,UPDATE(工资) ON 职工
TO 刘星 - 用户张新具有修改这两个表的结构的权力。
GRANT ALTER TABLE ON 职工,部门
TO 张新; - 用户周平具有对两个表所有权力(读,插,改,删数据),并具有给其他用户授权的权力。
GRANT ALL PRIVILIGES ON 职工,部门
TO 周平
WITH GRANT OPTION; - 用户杨兰具有从每个部门职工中SELECT 最高工资、最低工资、平均工资的权力,他不能查看每个人的工资。
CREATE VIEW 部门工资 AS
SELECT 部门.名称,MAX(工资),MIN(工资),AVG(工资)
FROM 职工,部门
WHERE 职工.部门号=部门.部门号
GROUP BY 职工.部门号
GRANT SELECT ON 部门工资
TO 杨兰;
7、把习题8 中(1)—(7)的每一种情况,撤销各用户所授予的权力
1. REVOKE SELECT ON 职工,部门 FROM 王明;
2. REVOKE INSERT , DELETE ON 职工,部门 FROM 李勇;
3. REOVKE SELECT ON 职工
WHEN USER ( ) =NAME
FROM ALI ;
4. REVOKE SELECT , UPDATE ON 职工
FROM 刘星;
5. REVOKE ALTER TABLE ON 职工,部门
FROM 张新;
6. REVOKE ALL PRIVILIGES ON 职工,部门
FROM 周平;
7. REVOKE SELECT ON 部门工资
FROM 杨兰;
DROP VIEW 部门工资;
8、理解并解释MAC 机制中主体、客体、敏感度标记的含义。
- 主体是系统中的活动实体,既包括DBMS 所管理的实际用户,也包括代表用户的各进程。
- 客体是系统中的被动实体,是受主体操纵的,包括文件、基表、索引、视图等。对于主体和 客体,DBMS 为它们每个实例(值)指派一个敏感度标记(Label )。
- 敏感度标记被分成若干级别,例如绝密(Top Secret )、机密(Secret )· 可信( Confidential )、公开(PubliC )等。主体的敏感度标记称为许可证级别(ClearanCe 玫vel ) ,客体的敏感度标记称为密级(Classification Level )。
9、什么是数据库的审计功能,为什么要提供审计功能?
- 审计功能是指DBMS 的审计模块在用户对数据库执行操作的同时把所有操作自动记录到系统的审计日志中。
- 因为任何系统的安全保护措施都不是完美无缺的,蓄意盗窃破坏数据的人总可能存在。利用数据库的审计功能,DBA 可以根据审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。
☆10、造成数据库不安全的因素
- 非授权用户对数据库的恶意存取和破坏
- 数据库中重要或敏感的数据被泄露
- 安全环境的脆弱性
11、常用的安全控制方法
- 用户身份鉴别
- 存取控制
- 自主存取控制方法
- 授权:授予与收回
- 数据库角色
- 强制存取控制方法
五、数据库完整性
1、什么是数据库的完整性?
数据库的完整性是指数据的正确性和相容性。
2、数据库的完整性概念与数据库的安全性概念有什么区别和联系?
数据的完整性和安全性是两个不同的概念,但是有一定的联系。前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出( Garba : e In Garba : e out )所造成的无效操作和错误结果。后者是保护数据库防止恶意的破坏和非法的存取。也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。
3、什么是数据库的完整性约束条件?可分为哪几类?
完整性约束条件是指数据库中的数据应该满足的语义约束条件。一般可以分为六类:静态列级约束、静态元组约束、静态关系约束、动态列级约束、动态元组约束、动态关系约束。静态列级约束是对一个列的取值域的说明,包括以下几个方面:
- 对数据类型的约束,包括数据的类型、长度、单位、精度等;
- 对数据格式的约束;
- 对取值范围或取值集合的约束;
- 对空值的约束;
- 其他约束。静态元组约束就是规定组成一个元组的各个列之间的约束关系,静态元组约束只局限在单个元组上。静态关系约束是在一个关系的各个元组之间或者若干关系之间常常存在各种联系或约束。
常见的静态关系约束有:
- 实体完整性约束;
- 参照完整性约束;
- 函数依赖约束。
动态列级约束是修改列定义或列值时应满足的约束条件,包括下面两方面:
- 修改列定义时的约束;
- 修改列值时的约束。动态元组约束是指修改某个元组的值时需要参照其旧值,并且新旧值之间需要满足某种约束条件。动态关系约束是加在关系变化前后状态上的限制条件,例如事务一致性、原子性等约束条件。
4、DBMS 的完整性控制机制应具有哪些功能?
DBMS 的完整性控制机制应具有三个方面的功能:
- 定义功能,即提供定义完整性约束条件的机制;
- 检查功能,即检查用户发出的操作请求是否违背了完整性约束条件;
- 违约反应:如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。
5、RDBMS 在实现参照完整性时需要考虑哪些方面?
RDBMs 在实现参照完整性时需要考虑以下几个方面:
- 外码是否可以接受空值。
- 册 l 除被参照关系的元组时的考虑,这时系统可能采取的作法有三种: l )级联删除( CASCADES ) ; 2 )受限删除( RESTRICTED ) ; 3 )置空值删除( NULLIFIES )。
- 在参照关系中插入元组时的问题,这时系统可能采取的作法有: l )受限插入; 2 )递归插入。
- 修改关系中主码的问题。一般是不能用 UPDATE 语句修改关系主码的。如果需要修改主码值,只能先删除该元组,然后再把具有新主码值的元组插入到关系中。如果允许修改主码,首先要保证主码的惟一性和非空,否则拒绝修改。然后要区分是参照关系还是被参照关系。
6、假设有下面两个关系模式:职工(职工号,姓名,年龄,职务,工资,部门号),其中职工号为主码;部门(部门号,名称,经理名,电话),其中部门号为主码。用 sQL 语言定义这两个关系模式,要求在模式中完成以下完整性约束条件的定义:定义每个模式的主码;定义参照完整性;定义职工年龄不得超过 60 岁。
CREATE TABLE DEPT
(Deptno NUMBER(2),
Deptname VARCHAR(10),
Manager VARCHAR(10),
PhoneNumber Char(12)
CONSTRAINT PK_SC RIMARY KEY(Deptno));
CREATE TABLE EMP
(Empno NUMBER(4),
Ename VARCHAR(10),
Age NUMBER(2),
CONSTRAINT C1 CHECK ( Aage<=60),
Job VARCHAR(9),
Sal NUMBER(7,2),
Deptno NUMBER(2),
CONSTRAINT FK_DEPTNO
FOREIGN KEY(Deptno)
REFFERENCES DEPT(Deptno));
7、关系系统中,当操作违反实体完整性、参照完整性和用户定义的完整性约束条件时,一般是如何分别进行处理的?
对于违反实体完整性和用户定义的完整性的操作一般都采用拒绝执行的方式进行处理。而对于违反参照完整性的操作,并不都是简单地拒绝执行,有时要根据应用语义执行一些附加的操作,以保证数据库的正确性。
8、什么是断言
SQL中,可以使用 CREATE ASSERTION
语句,通过声明性断言来指定更具一般性的约束。
可以定义涉及多个表的或聚集操作的比较复杂的完整性约束。
断言创建以后,任何对断言中所涉及的关系的操作都会触发关系数据库管理系统对断言的检查,任何使断言不为真值的操作都会被拒绝执行。
9、断言的创建
CREATE ASSERTION <断言名> <CHECK 子句>
例:限制数据库课程最多60名学生选修
CREATE ASSERTION ASSE_SC_DB_NUM
CHECK(60>=(SELECT count(*)
FROM C, SC
WHERE SC.CNO=C.CNO AND C.CNAME='SQL')
);
10、删除断言
DROP ASSERTION <断言名>
11、什么是触发器?
触发器(trigger)是用户定义在关系表上的一类由事件驱动的特殊过程。一旦定义,触发器将被保存在数据库服务器中,任何用户对表的增删改操作均由服务器自动激活相应的触发器,在关系数据库管理系统核心层进行集中的完整性控制。
12、定义触发器
触发器又叫做事件-条件-动作规则。当特定的系统事件(如对一个表进行增删改操作,事务的结束)发生时,对规则的条件进行检查,如果条件成立则执行规则中的动作,否则就不执行。规则中的动作体可以很复杂,可以涉及其他表和其他数据库对象,通常是一段SQL存储过程。
SQL使用CREATE TRIGGER命令建立触发器,其格式:CREATE TRIGGER<触发器名> –(每当触发事件发生时该触发器被激活)
{BEFORE|AFTER}<触发事件>ON<表名> –(指明触发器激活的时间在执行触发器事件前或后)
REFERENCING NEW|OLD ROW AS<变量> –(REFERENCING指出引用的变量)
FOR EACH{ROW|STATEMENT} –(定义触发器的类型,指明动作体执行的频率)
[WIEN <触发条件>]<触发动作体> –(近当触发条件为真时才执行触发动作体)
说明
- 只有表的拥有者,即创建表的用户才可以在表上创建触发器,并且一个表上只能创建一定数量的触发器。触发器的具体数量由具体的关系数据库管理系统在设计时确定。
- 触发器名可以包含模式名,也可以不包含模式名。同一模式下,触发器名必须是唯一的,并且触发器名和表名必须在同一模式下。
- 触发器只能定义在基本表上,不能定义在视图上。当基本表的数据发生变化时,将激活定义在该表上相应触发器事件的触发器,因此该表也成为触发器的目标表。
- 触发事件可以是INSERT、DELETE或UPDATE,也可以是这几个事件的组合,如INSERT OR DELETE等,还可以说UPDATE OF<触发列,…>,即进一步指明修改哪些列时激活触发器。AFTER/DEFORE是触发器的时机。AFTER表示触发事件的操作执行之后激活触发器;DEFORE表示触发器事件的操作执行之前激活触发器。
- 触发器按照所触发动作的间隔尺寸可以分为行级触发器(FOR EACH ROW)和语句级触发器(FOR EACH STATEMENT)。
- 触发器被激活时,只有当触发条件为真时触发动作体才执行,否则触发动作体不执行。如果省略WHEN触发条件,则触发动作体在触发器激活后立即执行。
- 触发动作体既可以是一个匿名PL/SQL过程块,也可以说对已创建存储过程的调用。如果说行级触发器,用户可以在过程体中使用NEW和OLD引用UPDATE/INSERT事件之后的新值和UPDAET/DELETE事件之前的旧值;如果是语句级触发器,则不能在触发动作体中使用NEW或OLD进行引用。
如果触发动作体执行失败,激活触发器的事件(即对数据库的增删改操作)就会终止执行执行,触发器的目标或触发器可能影响的其他对象不发生任何变化。
13、激活触发器
触发器的执行是由触发事件激活,并由数据库服务器自动执行的。一个数据表上可能定义了多个触发器,如多个BEFORE触发器、多个AFTER 触发器等,同一个表上的多个触发器激活时遵循如下的执行顺序:
- 执行该表上的BEFIRE触发器。
- 激活触发器的SQL语句。
- 执行该表上的AFTER触发器。
对于同一个表上的多个BEFORE(AFTER)触发器,遵循“谁先创建谁先执行”的原则,即按照触发器创建的时间先后顺序执行。有些关系数据库管理系统按照触发器名称的字母排序执行触发器。
14、删除触发器
SQL语句:
DROP TRIGGER<触发器名>ON<表名>
触发器必须是一个已创建的,并且只能由相应权限的用户删除。
备注:触发器虽然功能强大,但是每次访问一个表都可能触发一个触发器,会导致系统性能降低,所以要谨慎使用。
六、关系数据理论
七、数据库设计
1、试述数据库设计过程。
这里只概要列出数据库设计过程的六个阶段:
- 需求分析;
- 概念结构设计;
- 逻辑结构设计;
- 数据库物理设计;
- 数据库实施;
- 数据库运行和维护。
这是一个完整的实际数据库及其应用系统的设计过程。不仅包括设计数据库本身,还包括数据库的实施、运行和维护。设计一个完善的数据库应用系统往往是上述六个阶段的不断反复。
2、试述数据库设计过程各个阶段上的设计描述。
各阶段的设计要点如下:
- 需求分析:准确了解与分析用户需求(包括数据与处理)。
- 概念结构设计:通过对用户需求进行综合、归纳与抽象,形成一个独立于具体 DBMS 的概念模型。
- 逻辑结构设计:将概念结构转换为某个 DBMS 所支持的数据模型,并对其进行优化。
- 数据库物理设计:为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。
- 数据库实施:设计人员运用 DBMS 提供的数据语言、工具及宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
- 数据库运行和维护:在数据库系统运行过程中对其进行评价、调整与修改。
3、试述数据库设计过程中结构设计部分形成的数据库模式。
数据库结构设计的不同阶段形成数据库的各级模式,即:
- 在概念设计阶段形成独立于机器特点,独立于各个 DBMS 产品的概念模式,在本篇中就是 E 一 R 图;
- 在逻辑设计阶段将 E 一 R 图转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式,然后在基本表的基础上再建立必要的视图 ( Vi 娜),形成数据的外模式;
- 在物理设计阶段,根据 DBMS 特点和处理的需要,进行物理存储安排,建立索引,形成数据库内模式。
4、什么是数据库的概念结构?试述其特点和设计策略。
概念结构是信息世界的结构,即概念模型,其主要特点是:
- 能真实、充分地反映现实世界,包括事物和事物之间的联系,能满足用户对数据的处理要求,是对现实世界的一个真实模型;
- 易于理解,从而可以用它和不熟悉计算机的用户交换意见,用户的积极参与是数据库设计成功的关键;
- 易于更改,当应用环境和应用要求改变时,容易对概念模型修改和扩充;
- 易于向关系、网状、层次等各种数据模型转换。概念结构的设计策略通常有四种:
- 自顶向下,即首先定义全局概念结构的框架,然后逐步细化;
- 自底向上,即首先定义各局部应用的概念结构,然后将它们集成起来,得到全局概念结构;
- 逐步扩张,首先定义最重要的核心概念结构,然后向外扩充,以滚雪球的方式逐步生成其他概念结构,直至总体概念结构;
- 混合策略,即将自顶向下和自底向上相结合,用自顶向下策略设计一个全局概念结构的框架,以它为骨架集成由自底向上策略中设计的各局部概念结构。
5、什么是数据库的逻辑结构设计?试述其设计步骤。
数据库的逻辑结构设计就是把概念结构设计阶段设计好的基本 E 一 R 图转换为与选用的 DBMS 产品所支持的数据模型相符合的逻辑结构。设计步骤为:
- 将概念结构转换为一般的关系、网状、层次模型;
- 将转换来的关系、网状、层次模型向特定 DBMS 支持下的数据模型转换;
- 对数据模型进行优化。
6、模式、内模式、外模式分别在哪个阶段完成的?
- 模式:逻辑结构设计阶段
- 内模式:物理结构设计阶段
- 外模式:逻辑结构设计阶段
7、数据库的物理设计通常分哪两步?
- 确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构。
- 对物理结构进行评价,评价的重点是时间和空间效率。
8、数据库的物理设计的内容包括什么?
关系模式选择存取方法,以及设计关系、索引等数据库文件的物理存储结构。
9、常用的存取方法有什么?
索引方法和聚簇。
九、关系查询处理和查询优化
1、选择操作的实现方法有哪些?
- 简单的全表扫描算法
- 索引扫描算法
2、连接操作的常用方法有哪些?
- 嵌套循环算法
- 排序-合并算法
- 索引连接算法
- hash join算法
3、物理优化的方法有哪些?
- 基于规则的启发式优化。
- 基于代价估算的优化。
- 两者结合的优化。
4、选择操作的启发式规则
对于小关系,使用全表顺序扫描,即使选择列上有索引。
对于大关系,启发式规则有:
- 对于选择条件是“主码=值”的查询,查询结果最多是一个元组,可以选择主码索引。
- 对于选择条件是“非主属性=值”的查询,并且选择列上有索引,则要估算查询结果的元组数目,如果比例较小(<10%)可以使用索引扫描方法,否则还是使用全表顺序扫描。
- 对于选择条件是属性上的非等值查询或者范围的查询,并且选择列上有索引,则要估算查询结果的元组数目,如果比例较小(<10%)可以使用索引扫描方法,否则还是使用全表顺序扫描。
- 对于用AND连接的合取选择条件,如果有涉及这些属性的组合索引,则优先采用组合索引扫描方法,如果某些属性上有一般索引,则可以用[例9.1-C4]中介绍的索引扫描方法,否则使用全表顺序扫描。
- 对于用OR连接的析取选择条件,一般使用全表顺序扫描。
5、连接操作的启发式规则
- 如果两个表都已经按照连接属性排序,则选用排序-合并算法。
- 如果一个表在连接属性上有索引,则可使用索引连接算法。
- 如果1.2.都不适用,其中一表较小,则选用hash-join算法。
- 最后可选用嵌套循环算法。
6、语法树优化例题
假设有一学生选课数据库,其中包含学生S(sno,sname,sage,sdept,ssex), 课程C(cno,cname,ccredit), 选课SC(sno,cno,grade)等关系模式。
查询“程序设计”课成绩在90分以上的学生姓名。
试画出用关系代数表示的语法树,并用关系代数表达式优化算法对原始的语法树进行优化处理。
画出优化后的语法树。
十、数据库恢复技术
1、什么是事务?
事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。是恢复和并发控制的基本单位。
2、事务的ACID特性
- 原子性:事务是数据库的逻辑工作单位,事务中包括的诸操作要么全做,要么全部做。
- 一致性:事务执行的结构必须是使数据库从一个一致性状态变到另一个一致性状态。
- 隔离性:一个事务的执行不能被其它事务干扰。即一个事务的内部操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。
- 持续性:又称永久性。指一个事务一旦提交,他对数据库中数据的改变就应该是永久性的。接下来的其它操作或故障不应该对其执行结果有任何影响。
3、事务ACID特性可能遭到破坏的因素有那些?
- 多个事务并行运行时,不同事务的操作交叉执行
- 事务在运行过程中被强行停止。
4、故障的种类有那些?
- 事务内部的故障:事务内部的故障有的是可以通过事务程序本身发现的,更多的是非预期的,不能由事务程序处理。恢复操作是事务撤销(UNDO)。
- 系统故障:(软故障)系统故障是指造成系统停止运转任何事件,使得系统要重新启动。必须在系统重新启动时,让所有非正常终止的事物回滚,强行撤销所有未完成事务;要重做(REDO)已提交的事务,以将数据库真正恢复到一致状态。
- 介质故障:(硬故障)发生可能性最小,破坏程度最大。
- 计算机病毒:一种人为的故障或破坏。
5、建立冗余数据最常用的技术是什么?
-
数据转储:副本
- 静态转储:在系统中午运行事务时进行的转储操作。
- 动态转储:指转储期间允许对数据库进行存取或修改。
- 海量转储:指每次转储全部数据库。
- 增量转储:指每次只转储上一次转储后更新的数据。
-
登记日志文件:用来记录事务对数据库的更新操作的文件。
- 以记录为单位的日志文件:
- 各个事务的开始标记。
- 各个事务的结束标记。
- 各个事务的所有更新操作。
以上三个均作为日志文件中的一个日志记录,每个日志记录的内容主要包括:
+ 事务标识(标明是哪个事务)
+ 操作的类型
+ 操作对象
+ 更新前数据的旧值
+ 更新后数据的新值- 以数据块为单位的日志文件,日志记录的内容包括
- 事务标识
- 被更新的数据块
- 以记录为单位的日志文件:
6、检查点记录的内容包括什么?
- 建立检查点时刻所有正在执行的事物清单
- 这些事务最近一个日志记录的地址
7、动态维护日志文件的方法是什么?
周期性地执行建立检查点、保存数据库状态的操作。
具体步骤是:
- 将当前日志缓冲区中的所有日志记录写入磁盘的日志文件中。
- 在日志文件中写入一个检查点记录。
- 将当前数据缓冲区的所有数据记录写入磁盘的数据库中。
- 把检查点记录在日志文件中的地址写入一个重新开始文件。
8、使用检查点方法的优点?
- 可以改善恢复效率。
☆9、系统使用检查点方法进行恢复的步骤是?
- 从重新开始文件中找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录。
- 由该检查点记录得到检查点建立时刻所有正在执行的事务清单UNDO-LIST。
- 从检查点开始正向扫描日志文件
- 如有新开始的事务 Ti,把Ti暂时放入UNDO-LIST队列
- 如有提交的事务Tj,就把Tj从UNDO-LIST队列移到REDO-LIST队列;直到日志文件结束。
- 对UNDO-LIST中的每个事务做UNDO操作,对REDO-LIST中的每个事务做REDO操作,
十一、并发控制
1、并发控制是为了保护什么的而产生的技术?
- 为了保护事务的隔离性和一致性。
2、并发操作可能会带来哪些问题?
- 丢失修改:两个事务T1、T2,T2提交的结构破坏了T1提交的结果,导致T1的修改被丢失。
- 不可重复读:是指事务T1读取数据后,T2执行更新操作,使T1无法再现前一次读取结果。
- 读“脏”数据:是指T1修改某一数据并将其写回磁盘,T2读取同一数据后,T1由于某种原因被撤销,T1修改过的数据被复原,那么T2所读数据就是“脏”数据了。
上面三类数据不一致性是因为并发操作破坏了事务的隔离性。
3、并发控制的主要技术有哪些?
- 封锁
- 时间戳
- 乐观控制法
- 多版本并发控制
4、排它锁和共享锁的概念
- 排他锁(X):又称写锁。若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁为止。这就保证了其他事务在T释放A上的锁之前不能再读取和修改A。
- 共享锁(S):又称读锁。若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的锁为止。这就保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。
5、相容性
6、封锁协议
- 一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。
一级封锁协议可防止丢失修改,并保证事务T是可恢复的。 - 二级封锁协议:在一级封锁协议的基础上,增加事务T在读取数据R之前必须先对其加S锁,读完后释放S锁。
可以防止丢失修改,可进一步防止读“脏”数据。 - 三级封锁协议:在一级封锁协议的基础上,增加事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。
可以防止丢失修改和防止读“脏”数据,可进一步防止了不可重复读。
7、避免活锁的简单方法是什么?
- 采用先来先服务的策略。
8、死锁的解决办法是什么?
- 预防死锁
- 一次封锁法:要求每个事务必须一次将所有要使用的数据全部加锁,否则不能继续执行。
- 顺序封锁法:预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实施封锁。
- 死锁的诊断与接触
- 超时法:如果一个事务的等待时间超过规定的时限,就认为发生了死锁。
- 等待图法
☆9、什么是并发调度的可串并性?
多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行这些事务时的结果相同,称这种调度策略为可串行化调度。
可串行性是并发事务正确调度的准则。
10、什么是冲突操作?
冲突操作是指不同的事务对同一数据的读写操作和写写操作。
11、如何判断一个调度是否是冲突可串行化?
若一个调度是冲突可串行化,则一定是可串行化的调度。
冲突可串行化调度是可串行化调度的充分条件,不是必要条件。
12、两段锁的含义是什么?
- 事务分为两个阶段,第一阶段是获得封锁,也称为扩展阶段。此阶段,事务可以申请获得任何数据项上的任何类型的锁,但是不能释放任何锁。
- 第二阶段是释放封锁,也称收缩阶段。此阶段,事务只能释放任何数据项上的任何类型的锁,但不能再申请任何锁。
13、事务遵守两段锁协议是可串行化调度的充分条件,而不是必要条件。
14、什么是封锁的粒度?
封锁对象的大小成为封锁粒度,封锁对象可以是这样一些逻辑单元:属性值、属性值的集合、元组、关系、索引项、整个索引乃至整个数据库。也可以是一些物理单元:页、物理记录等。
15、封锁粒度与什么密切相关?
封锁粒度与系统的并发度和并发控制的开销密切相关。
封锁的粒度越大,数据库所能够封锁的数据单元就越少,并发度就越小,系统开销也越小;反之,封锁的粒度越小,并发度越高,但系统开销也就越大。
16、为什么加意向锁?
对某个数据对象加锁,系统要检查该数据对象上有无显式封锁与之冲突;再检查其所有上级结点,看事务的显式封锁是否与该数据对象上的隐式封锁冲突;还要检查其所有下级结点,看他们的显式封锁是否与本事务的隐式封锁冲突。
显然,这样的检查方法效率很低。为此引入意向锁,使得数据库管理系统就无须逐个检查下一级结点的显式封锁。
17、什么是意向锁?
意向锁的含义是如果对一个结点加意向锁,则说明该结点的下层结点正在被加锁;对任一结点加锁时,必须对它的上级结点加意向锁。
18、意向锁有哪几种?
- 意向共享锁(IS锁)
- 意向排他锁(IX锁)
- 共享意向排它锁(SIX锁)