文档库 最新最全的文档下载
当前位置:文档库 › 数据库期末重点

数据库期末重点

数据库系统概论复习资料
第一章
一、名词解释
1数据,是数据库中存储的基本对象,是描述事物的符号记录。
2数据库,是长期储存在计算机内、有组织的、可共享的大量数据的集合。
3数据库管理系统,是位于用户与操作系统之间的一层数据管理软件,用于科学地组织、存储和管理数据、高效地获取和维护数据。
4数据库系统,指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统、应用系统、数据库管理员(DBA)构成。
5数据模型:是用来抽象、表示和处理现实世界中的数据和信息的工具,是对现实世界的模拟,是数据库系统的核心和基础;其组成元素有数据结构、数据操作和完整性约束。
6概念模型:也称信息模型,是按用户的观点来对数据和信息建模,主要用于数据库设计。
7逻辑模型:是按计算机系统的观点对数据建模,用于DBMS实现。
8物理模型:是对数据最底层的抽象,描述数据在系统内部的表示方式和存取方法,在磁盘或磁带上的存储方式和存取方法,是面向计算机系统的。
9实体和属性:客观存在并可相互区别的事物称为实体。实体所具有的某一特性称为属性。
10E-R图:即实体-关系图,用于描述现实世界的事物及其相互关系,是数据库概念模型设计的主要工具。
11关系模式:从用户观点看,关系模式是由一组关系组成,每个关系的数据结构是一张规范化的二维表。
12型/值:型是对某一类数据的结构和属性的说明;值是型的一个具体赋值,是型的实例。
13数据库模式:是对数据库中全体数据的逻辑结构(数据项的名字、类型、取值范围等)和特征(数据之间的联系以及数据有关的安全性、完整性要求)的描述。
14数据库的三级系统结构:外模式、模式和内模式。
15数据库内模式:又称为存储模式,是对数据库物理结构和存储方式的描述,是数据在数据库内部的表示方式。一个数据库只有一个内模式。
16数据库外模式:又称为子模式或用户模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图。通常是模式的子集。一个数据库可有多个外模式。
17数据库的二级映像:外模式/模式映像、模式/内模式映像。
二、填空题
1数据库系统由数据库、数据库管理系统、应用系统和数据库管理员构成。
2数据管理是指对数据进行分类、组织、编码、存储、检索和维护等活动。
3数据管理技术的发展经历了人工管理、文件系统、数据库系统3个阶段。
4数据模型分为概念模型、逻辑模型和物理模型3个方面。
5数据模型的组成要素是:数据结构、数据操作、

完整性约束条件。
6实体型之间的联系分为一对一、一对多和多对多三种类型。
7常见的数据模型包括:关系、层次、网状、面向对象、对象关系映射等几种。
8关系模型的完整性约束包括:实体完整性、参照完整性和用户定义完整性。
三、问答题
1简述DBMS的主要功能:数据定义、数据组织、存储和管理、数据操纵(查询、插入、删除和修改)、数据库的事务管理和运行管理、数据库的建立和维护功能、其它功能
2简述人工数据管理阶段的特点:由程序员管理,数据不保存、应用程序管理数据、数据不共享、冗余度极大、数据不具独立性,完全依赖于程序
3简述文件系统阶段数据管理的特点:数据由文件系统管理,可长期保存、数据面向某一应用程序,共享性差、冗余度大、数据独立性差,数据的逻辑结构改变必须修改应用程序
4简述数据库系统阶段数据管理的特点:数据结构化、数据的共享性高,冗余度低,易扩充、数据独立性高、数据由DBMS统一管理和控制
5 DBMS可以对数据提供哪些控制功能?数据的安全性(Security)保护:保护数据,以防止不合法的使用造成的数据的泄密和破坏。数据的完整性(Integrity)检查:将数据控制在有效的范围内,或保证数据之间满足一定的关系。并发(Concurrency)控制:对多用户的并发操作加以控制和协调,防止相互干扰而得到错误的结果。数据库恢复(Recovery):将数据库从错误状态恢复到某一已知的正确状态。
6何谓数据模型?它应满足哪些要求?数据模型是用来抽象、表示和处理现实世界中的数据和信息的工具,是对现实世界的模拟。数据模型应满足三方面要求:能比较真实地模拟现实世界
容易为人所理解、便于在计算机上实现
7何谓数据结构?描述的内容是什么?
数据结构是对数据库的组成对象以及对象之间的联系的描述。
描述的内容包括与对象的类型、内容、性质有关的和与数据之间联系有关的对象。
举例说明一对一、一对多和多对多3种联系。
一个班级只能有一个正班长,一个班长只能在一个班级中任职。班长和班级两个实体集之间就是一对一的联系。
一个班级可以有很多学生,一个学生只能在一个班级中就读。班级和学生两个实体集之间就是一对多的联系。
一门课程可以被多个学生选修,一个学生可以选修多门课程。课程和学生两个实体集之间就是多对多的联系。
分析并画出某教学管理系统的E-R图(可不画出属性)。主要实体型包括:学生、教师、课程、参考书、教室。
8简述层次模型的基本特点:
结点的双亲是唯一的
只能直接处理一对多的实体联系
每个记录类型可以定

义一个排序字段,也称为码字段
任何记录值只有按其路径查看时,才能显出它的全部意义
没有一个子女记录值能够脱离双亲记录值而独立存在
9简述层次模型的优缺点。
优点:层次模型的数据结构比较简单清晰
查询效率高,性能优于关系模型,不低于网状模型
层次数据模型提供了良好的完整性支持
缺点:多对多联系表示不自然
对插入和删除操作的限制多,应用程序的编写比较复杂
查询子女结点必须通过双亲结点
由于结构严密,层次命令趋于程序化
10阐述数据库三级模式、二级映象的含义及作用。
数据库三级模式反映的是数据的三个抽象层次:模式是对数据库中全体数据的逻辑结构和特征的描述。内模式又称为存储模式,是对数据库物理结构和存储方式的描述。外模式又称为子模式或用户模式,是对特定数据库用户相关的局部数据的逻辑结构和特征的描述。
数据库三级模式通过二级映象在DBMS内部实现这三个抽象层次的联系和转换。外模式面向应用程序,通过外模式/模式映象与逻辑模式建立联系,实现数据的逻辑独立性。模式/内模式映象建立模式与内模式之间的一对一映射,实现数据的物理独立性。
11阐述DBA的职责。
决定数据库的中的信息内容和结构
决定数据库的存储结构和存取策略
决定数据的安全性要求和完整性约束条件
监控数据库的使用和运行
数据库的改进和重组重构
定期对数据库进行重组织,以提高系统的性能
第二章
一、名词解释
1主码:能够唯一地标识一个元组的属性或属性组称为关系的码或候选码。若一个关系有多个候选码则可选其一作为主码或主键(Primary key)。
2外码:如果一个关系的一个或一组属性引用(参照)了另一个关系的主码,则称这个或这组属性为外码或外键(Foreign key)。
3关系数据库:依照关系模型建立的数据库称为关系数据库。它是在某个应用领域的所有关系的集合。
4关系模式:简单地说,关系模式就是对关系的型的定义,包括关系的属性构成、各属性的数据类型、属性间的依赖、元组语义及完整性约束等。关系是关系模式在某一时刻的状态或内容,关系模型是型,关系是值,关系模型是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。
5实体完整性:用于标识实体的唯一性。它要求基本关系必须要有一个能够标识元组唯一性的主键,主键不能为空,也不可取重复值。
6参照完整性:用于维护实体之间的引用关系。它要求一个关系的外键要么为空,要么取与被参照关系对应的主码值,即外码值必须是主码中已存在的值。
7

用户定义的完整性:就是针对某一具体应用的数据必须满足的语义约束。包括非空、唯一和布尔条件约束三种情况。
二、填空题
1在学生(学号,姓名,性别,年龄,班长学号)、课程(课程号,课程名,学时数)、选修(学号,课程号,成绩)三个关系中:
选修关系的主码是学号+课程号,外码学号参照学生关系的主码,外码课程号参照课程关系的主码。
学生关系的主码是学号,外码是班长学号,参照学生关系的主码。
2关系的三类完整性约束分别是实体完整性、参照完整性和用户定义的完整性。
3关系数据库语言分为关系代数、关系演算和结构化查询语言三大类。
4关系的5种基本操作是选择、投影、并、差、笛卡尔积。
三、问答题
1简述基本关系的性质
每个列具有相同的数据类型
不同的列可出自同一个域,但必须是不同的名字
列的顺序可以任意交换
行的顺序也可以任意交换
至少有一个候选码,用于标识元组的唯一性
分量必须取原子值,即属性不能再分
2写出关系模式的五元组形式化表示并说明各符号的含义。
关系模式是对关系的描述,形式化表示为:R(U,D,DOM,F)
R —— 关系名
U —— 组成该关系的属性名集合
D —— 属性组U中属性所来自的域
DOM —— 属性向域的映象集合
F —— 属性间的数据依赖关系集合
3简述教材“学生-课程”示例数据库三个关系(表)的主外键及参照情况。
学生(学号,姓名,性别,专业号,年龄)
课程(课程号,课程名称,学分)
选修(学号,课程号,成绩)
学号是学生关系的主键,课程号是课程关系的主键,选修关系的主键是学号+课程号属性组。选修关系有两个外键,其中学号外键参照学生关系的主键(学号),课程号外键参照课程关系的主键(课程号)。选修关系属于参照关系,学生关系和课程关系以至于是被参照关系。
4设R是包含k1个元组的n目关系,S是包含k2个元组的m目关系,写出R与S的笛卡尔积运算公式并说明其含义。
运算公式为:R×S = { tr ts|tr R ∧ ts S }
运算结果为一个(n+m)目关系,其每个元组的前n列是关系R的一个元组,后m列是关系S的一个元组。
运算结果包含由k1×k2个元组,由来自R和S的所有元组交叉组合而成
写出关系选择(σ)运算的公式并说明其含义。
运算公式为:σF (R) = { t|tR ∧ F(t)=‘真' }
选择运算的含义为从关系R中找出符合条件的所有元组。式中:F为选择条件,t表示元组,它是R元组的子集,并使逻辑表达式F(t)为真。
写出关系投影()运算的公式并说明其含义。
运算公式为:A(R) = { t[A]|t R }
投影运算的含义为从关系R中选择出若干属性列组成新的关系。式中A

为R的部分属性组,t表示元组,t[A]表示由属性组A上的分量构成的元组。
第三章
一、名词解释
1 SQL:结构化查询语言的简称,是关系数据库的标准语言。SQL是一种通用的、功能极强的关系数据库语言,是对关系数据存取的标准接口,也是不同数据库系统之间互操作的基础。集数据查询、数据操作、数据定义、和数据控制功能于一体。
2数据定义:数据定义功能包括模式定义、表定义、视图和索引的定义。
3嵌套查询:指将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询。
二、填空题
1 SQL数据定义语句的操作对象有:模式、表、视图和索引。
2 SQL数据定义语句的命令动词是:CREATE、DROP和ALTER。
3 RDBMS中索引一般采用B+树或HASH来实现。
4 索引可以分为唯一索引、非唯一索引和聚簇索引三种类型。
5 填空完成下列查询条件表:
查询条件 运算符/谓词
比 较 =,>,<,>=,<=,!=,<>,!>,!<
确定范围 BETWEEN AND,NOT BETWEEN AND
确定集合 IN,NOT IN
字符匹配 LIKE,NOT LIKE
空 值 IS NULL,IS NOT NULL
多重条件(逻辑运算) AND,OR,NOT

操作对象 操作方式
创建 删除 修改
模式 CREATE SCHEMA DROP SCHEMA
表 CREATE TABLE DROP TABLE ALTER TABLE
视图 CREATE VIEW DROP VIEW
索引 CREATE INDEX DROP INDEX

三、问答题
1简述SQL的特点。
集数据定义语言(DDL)、数据操纵(DML)和数据控制语言(DCL)于一体,可以独立完成数据库生命周期中的全部活动。
属于高度非过程化语言,只要告知"做什么",而无须了解"如何做"。
采用集合操作方式,操作对象、查询结果均为元组的集合,效率高。
同一语法结构多种使用方式。既可用于联机交互操作,也可嵌入其它高级语言程序中使用。
语言简单易用,完成核心功能只需9个动词。

2写出SQL创建表语句的一般格式并说明其含义。
CREATE TABLE <表名>
( <列名> <数据类型>[ <列级完整性约束> ]
[,<列名> <数据类型>[ <列级完整性约束>] ] …
[,<表级完整性约束> ] ) ;
<数据类型>可以是数据库系统支持的各种数据类型,包括长度和精度。
列级完整性约束为针对单个列(本列)的完整性约束,包括PRIMARY KEY、REFERENCES 表名(列名)、UNIQUE、NOT NULL等。
表级完整性约束可以是基于表中多列的约束,包括PRIMARY KEY (列名列表)、FOREIGN KEY REFERENCES 表名(列名) 等。
3写出SQL创建索引语句的一般格式并说明其含义。
CREATE [UNIQUE] [CLUSTER] INDEX <索引名>
ON <表名> (<列名列表> ) ;
UNIQUE:表示创建唯一索引,缺省为非唯一索引。
CLUSTER:表示创建聚簇索引,缺省为非聚簇索引。
<列名列表>:一个或逗号分隔的多个列名,每个

列名后可跟ASC或DESC,表示升/降序,缺省为升序。多列时则按为多级排序。
4写出SQL查询语句的一般格式并说明其含义。
SELECT [ALL|DISTINCT] <算术表达式列表> FROM <表名或视图名列表>
[ WHERE <条件表达式1> ]
[ GROUP BY <属性列表1> [ HAVING <条件表达式2 > ] ]
[ ORDER BY <属性列表2> [ ASC|DESC ] ] ;?
说明:
ALL/DISTINCT:缺省为ALL,即列出所有查询结果记录,包括重复记录。DISTINCT则对重复记录只列出一条。
算术表达式列表:一个或多个逗号分隔的算术表达式,表达式由常量(包括数字和字符串)、列名、函数和算术运算符构成。每个表达式后还可跟别名。也可用*代表查询表中的所有列。
<表名或视图名列表>:一个或多个逗号分隔的表或视图名。表或视图名后可跟别名。
条件表达式1:包含关系或逻辑运算符的表达式,代表查询条件。
条件表达式2:包含关系或逻辑运算符的表达式,代表分组条件。
<属性列表1>:一个或逗号分隔的多个列名。
<属性列表2>:一个或逗号分隔的多个列名,每个列名后可跟ASC或DESC,表示升/降序,缺省为升序。

5写出插入单个记录的SQL语句格式并说明其含义。
语句格式:
INSERT INTO <表名> [ ( <属性列表> ) ]
VALUES ( <常量列表> )
说明:
INTO子句的<属性列表>可为表中的全部属性列,也可为非空部分属性,顺序不限,以逗号分隔。缺省为表中的所有属性。
VALUES子句的<常量列表>由逗号分隔的常量构成,其个数、类型和顺序必须与属性列表一致。
6简述视图的作用。
能够简化用户的操作:简化用户的查询操作,用户注意力可集中在自己关心的数据上。
使用户能以多种角度看待同一数据:不同的用户可以从不同的角度看待同一数据。
对重构数据库提供了一定程度的逻辑独立性:在数据库三级模式结构中,视图属于外模式,因而可保证数据的逻辑独立性。
能够对机密数据提供安全保护:视图机制不仅具备受限更新,更可向特定用户屏蔽或开放机密数据。适当的利用视图可以更清晰的表达查询。

第四、五章
一、名词解释
1数据库角色:被命名的一组与数据库操作相关的权限,是权限的集合,通过角色授权可简化授权过程。用CREATE ROLE语句创建角色,然后用GRANT语句给角色授权。
自主存取控制(DAC):通过将不同数据库对象的不同操作权限授予不同的用户,来实现数据安全性控制的一种机制。在这种机制下,DBA和属主用户可以将对象的操作权限自主授予他人,也可随时回收权限。
强制存取控制(MAC):是建立在DAC之上的安全验证机制。这种机制分别对主体和客体施加敏感度标记(许可证和密级),标

记与数据是一个不可分的整体,数据的副本与正本一样拥有密级保护。
2数据加密:是根据一定的算法将原始数据(明文)变换为不可直接识别的格式(密文)的一种数据保护手段,加密可以使不知道解密算法的人无法获知数据的内容,从而防止数据在存储和传输过程中失密。
3触发器:是用户定义在基本表上的一类由事件驱动的特殊过程。由服务器自动激活,能执行更为复杂的检查和操作,具有更精细和更强大的数据控制能力。使用CREATE TRIGGER 命令建立触发器。
二、填空题
1计算机系统存在技术安全、管理安全和政策法律三类安全性问题。
2TCSEC/TDI标准由安全策略、责任、保证和文档四个方面内容构成。
3常用存取控制方法包括自主存取控制(DAC)和强制存取控制(MAC)两种。
4自主存取控制(DAC)的SQL语句包括GRANT和REVOKE两个。用户权限由数据对象和操作类型两部分构成。
5强制存取控制(MAC) 将实体分为主体和客体两大类。
6MAC的敏感度标记分为绝密、机密、可信和公开四个安全级别。
7数据加密的方法大致分为替换法、置换法和混合法三种类型。
8参照完整性违约处理的方式包括拒绝执行、级连操作和置空值三种策略。
三、问答题
1数据库安全性控制的常用方法有哪些?
用户标识和鉴定:是数据库访问控制的最外层安全保护措施,通过用户标识和口令实现。
存取控制:通过用户权限定义和合法权限检查机制共同构成DBMS的安全子系统
视图:可在一定程度上对保密数据提供隐藏保护。
审计:用于记录用户对数据库的所有操作以便事后跟踪和追溯。
加密存储:对高度机密的数据进行数据加密,是防止数据在存储和传输过程中失密的有效手段。
2写出下列SQL自主权限控制命令。
把对Student和Course表的全部权限授予所有用户。
GRANT ALL PRIVILIGES ON TABLE Student,Course TO PUBLIC ;
把对Student表的查询权和姓名修改权授予用户U4。
GRANT SELECT,UPDATE(Sname) ON TABLE Student TO U4 ;
把对SC表的插入权限授予U5用户,并允许他传播该权限。
GRANT INSERT ON TABLE SC TO U5 WITH GRANT OPTION ;
把用户U5对SC表的INSERT权限收回,同时收回被他传播出去的授权。
REVOKE INSERT ON TABLE SC FROM U5 CASCADE ;
创建一个角色R1,并使其对Student表具有数据查询和更新权限。
CREATE ROLE R1;
GRANT SELECT,UPDATE ON TABLE Student TO R1;
对修改Student表结构的操作进行审计。
AUDIT ALTER ON Student ;
3简述可能破坏参照完整性的情况及违约处理方式。
被参照表(例如student) 参照表(例如SC) 违约处理
可能破坏参照完整性 <--- 插入元组 拒绝
可能破坏参照完整性 <--- 修改主码值 拒绝
删除元组

---> 可能破坏参照完整性 拒绝/级连删除/设置为空值
修改主码值 ---> 可能破坏参照完整性 拒绝/级连删除/设置为空值

在参照表中插入或删除元组时可能会破坏参照完整性,DBMS将拒绝执行。
在被参照表中删除元组时也可能会破坏参照完整性,DBMS将选择拒绝删除或级连删除或设置空值几种方案处理。拒绝为默认策略。
在被参照表中修改主码值时也可能会破坏参照完整性,DBMS将选择拒绝修改或级连修改或设置空值几种方案处理。拒绝为默认策略。
4写出创建触发器的一般语法并说明其含义。
CREATE TRIGGER <触发器名> { BEFORE|AFTER} <触发事件> ON <表名>
FOR EACH { ROW|STATEMENT } [ WHEN <触发条件> ]
AS BEGIN
<触发动作体>
END ;
说明:
<触发事件>可以是INSERT、DELETE或UPDATE [OF <列,…>]等数据更新操作
BEFORE表示在操作执行前触发动作体,AFTER则在操作执行后触发动作体
FOR EACH ROW为行级触发器,操作涉及多少行就会执行多少次触发动作体
FOR EACH STATEMENT 为语句级触发器,事件发生时触发动作体只执行一次
<触发条件>是一个布尔表达式,表示事件发生时是否触发动作执行的附加条件
<触发动作体>为事件发生时执行的动作。可以是单个SQL语句或PL/SQL过程,也可以是存储过程调用。可以用NEW和OLD引用新值和原值。
第六、七章
一、名词解释
1数据依赖:反映一个关系内部属性与属性之间的约束关系,是现实世界属性间相互联系的抽象,属于数据内在的性质和语义的体现。
2规范化理论:是用来设计良好的关系模式的基本理论。它通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。
3函数依赖:简单地说,对于关系模式的两个属性子集X和Y,若X的任一取值能唯一确定Y的值,则称Y函数依赖于X,记作XY。
4非平凡函数依赖:对于关系模式的两个属性子集X和Y,如果XY,但YX,则称XY为非平凡函数依赖;如果XY,但YX,则称XY为非平凡函数依赖。
5完全函数依赖:对于关系模式的两个属性子集X和Y,如果X→Y,并且对于X的任何一个真子集X',都有X'→Y,则称Y对X完全函数依赖。
6范式:指符合某一种级别的关系模式的集合。在设计关系数据库时,根据满足依赖关系要求的不同定义为不同的范式。
7规范化:指将一个低一级范式的关系模式,通过模式分解转换为若干个高一级范式的关系模式的集合的过程。
8 1NF:若关系模式的所有属性都是不可分的基本数据项,则该关系模式属于1NF。
2NF:1NF关系模式如果同时满足每一个非主属性完全函数依赖于码,则该关系模式属于2NF。
3NF:若关系模式的每

一个非主属性既不部分依赖于码也不传递依赖于码,则该关系模式属于3NF。
BCNF:若一个关系模式的每一个决定因素都包含码,则该关系模式属于BCNF。
9数据库设计:是指对于一个给定的应用环境,构造优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。
数据库设计的6个基本步骤:需求分析,概念结构设计,逻辑结构设计,物理结构设计,数据库实施,数据库运行和维护。
10概念结构设计:指将需求分析得到的用户需求抽象为信息结构即概念模型的过程。也就是通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。
11逻辑结构设计:将概念结构模型(基本E-R图)转换为某个DBMS产品所支持的数据模型相符合的逻辑结构,并对其进行优化。
12物理结构设计:指为一个给定的逻辑数据模型选取一个最适合应用环境的物理结构的过程。包括设计数据库的存储结构与存取方法。
13抽象:指对实际的人、物、事和概念进行人为处理,抽取所关心的共同特性,忽略非本质的细节,并把这些特性用各种概念精确地加以描述,这些概念组成了某种模型。
二、填空题
1数据库设计必须遵循结构设计和行为设计相结合的原则。
2用户对数据库的要求包括信息要求、处理要求、安全性要求以及完整性要求四个方面。
3数据字典主要包括数据项、数据结构、数据流、数据存储和处理过程五个部分。
4三种常用抽象方法是分类、聚集和概括。
5局部E-R图之间的冲突主要表现在属性冲突、命名冲突和结构冲突三个方面。
6数据库常用的存取方法包括索引方法、聚簇方法和HASH方法三种。
7确定数据存放位置和存储结构需要考虑的因素主要有:存取时间、存储空间利用率和维护代价等。
三、问答题
1已知关系模式Student,U ={学号,所属系,系主任,课程号,成绩},分析其属性间的函数依赖F,然后将其分解为更高级的范式以解决数据操作异常和冗余问题。
函数依赖:F = { 学号→所属系,所属系→系主任,(学号,课程号)→成绩 }
模式分解:
S( 学号,所属系,学号→所属系)
SC( 学号,课程号,成绩,(学号,课程号)→成绩 )
DEPT(所属系,系主任,所属系→系主任 )
2简述数据库设计的内容和目标。
数据库设计的内容就是针对一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作

要求。
数据库设计的目标就是要为用户和各种应用系统提供一个信息基础设施和高效率的运行环境。
3简述数据库设计的基本过程。
需求分析阶段:准确了解与分析用户需求(包括数据与处理),是最困难、最耗费时间的第一步。
概念结构设计阶段:通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。是整个数据库设计的关键。
逻辑结构设计阶段:将概念结构模型转换为某个DBMS所支持的数据结构模型,并对其进行优化。
数据库物理设计阶段:为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)
数据库实施阶段:运用DBMS提供的数据库语言(如SQL)及宿主语言,根据逻辑设计和物理设计的结果进行实施。
数据库运行和维护阶段:试运行通过后的数据库应用系统即可投入正式运行,并在运行过程中不断地对其进行评价、调整和优化。
4简述数据库需求分析的基本任务。
详细调查现实世界要处理的对象(组织、部门、企业等)
充分了解原系统(手工系统或计算机系统)
明确用户的各种需求
确定新系统的功能
充分考虑今后可能的扩充和改变


5用户需求调查的具体步骤有哪些?
调查组织机构情况
调查各部门的业务活动情况
在熟悉业务活动的基础上,协助用户明确对新系统的各种要求。
确定新系统的边界
6数据项描述的内容有哪些?
数据项描述={数据项名,数据项含义说明,别名,数据类型,长度,
取值范围,取值含义,与其他数据项的逻辑关系,数据项之间的联系}
7数据流描述的内容有哪些?
数据流描述={数据流名,说明,数据流来源,数据流去向,组成:{数据结构},
平均流量,高峰期流量}
8数据存储描述的内容有哪些?
数据存储描述={数据存储名,说明,编号,输入的数据流,输出的数据流,
组成:{数据结构},数据量,存取频度,存取方式}
9简述建立索引的一般原则。
如果一个(或一组)属性经常在查询条件中出现,则考虑在这个(或这组)属性上建立索引(或组合索引);
如果一个属性经常作为最大值和最小值等聚集函数的参数,则考虑在这个属性建立索引;
如果一个(或一组)属性经常在连接操作的连接条件中出现,则考虑在这个(或这组)属性上建立索引;
维护和查找索引需要开销,频繁增删的关系不宜建立太多索引。
10数据库投入正式运行后为什么还需要维护?维护工作由谁负责?主要工作有哪些?
数据库维护的原因主要有:①应用环境在不断变化,②物理存储会不断变化。
数据库的日常维护工作主要由DBA负责,主要工作有有:
数据库的转储和恢复

数据库的安全性、完整性控制
数据库性能的监督、分析和改进
数据库的重组织和重构造
第九章
一、名词解释
1代数优化:指针对关系代数表达式的优化。即通过对关系代数表达式的等价变换(主要为改变查询语句中操作的次序和组合)来提高查询效率。
2物理优化:指针对存取路径和底层操作算法的优化。即选择高效合理的操作算法或存取路径,求得优化的查询计划以达到查询优化的目的。
二、填空题
1查询优化分为关系代数优化和物理优化两大类。
2表与表连接操作的实现方法主要有嵌套循环法、排序-合并法、索引连接法和哈希连接法四种。
3查询执行的代价主要包括:I/O代价(磁盘存取块数)、CPU代价(处理机时间)以及内存代价等。
三、问答题
1简述RDBMS查询处理的基本步骤。
查询分析:从查询语句中识别出语言符号(关键字、关系名、属性名等), 进行语法检查和语法分析, 判断查询语句是否符合SQL语法规则。
查询检查:对合法的查询语句进行语义检查,根据用户权限和完整性约束定义对安全性和完整性进行检查。
查询优化:选择一个高效执行的查询处理策略,包括优化关系代数表达式和优化存取路径和底层操作算法。
查询执行:生成优化的查询代码并执行。
2简述等值连接操作的各种实现方法。
嵌套循环法:以A表的每一个元组作外层循环,检索B表中的每一个元组(内层循环),检查这两个元组在连接属性(C)上是否相等,是则串接后作为结果输出,直到外层循环表中的所有元组处理完为止。
排序-合并法:首先对连接的A、B两表按连接属性C排序。从A表的第一个元组开始,依次扫描B表中具有相同C值的元组,并把它们连接起来输出。当扫描到C值不同时中断扫描,返回A表扫描它的下一个元组,然后再返回B表从中断处继续扫描与该元组具有相同C值的元组,并把它们连接起来。重复上面的步骤直到A表扫描完毕业。
索引连接法:首先必须在B表建立连接属性C的索引。然后从A表的第一个元组开始,由C值通过B表的索引查找相应的元组,并把这些元组和A表的这个元组连接起来输出。循环执行上面的步骤直到A表的所有元组处理完为止。
哈希连接法:首先以连接属性C作为hash码,用同一个hash函数把A和B表的元组散列到同一个hash文件中。接着对包含较少元组的表(比如B)进行一遍处理,把它的元组按hash函数分散到hash表的桶中。然后对另一个表(A)进行一遍处理,把A的元组散列到适当的hash桶中,把元组与桶中所有来自B并与之相匹配的元组连接起来。

3代数优化的典型启发式规则有哪些?
选择运算应尽可能先做,这是优化策略中最重

要、最基本的一条。
投影运算和选择运算尽可能同时进行。如果可能,在扫描一个关系的同时完成所有的投影和选择运算以避免重复扫描关系。
把投影同其前后的双目运算结合起来,也可以避免重复扫描关系。
把某些选择同在它前面要执行的笛卡尔积结合起来成为一个连接运算。
找出公共子表达式,先计算一次公共子表达式并把结果写入中间文件中,常常具有更好的效果。
第十章
一、名词解释
1事务:是用户定义的一个数据库操作序列,这些操作要么全做,要么全部做,是一个不可分割的工作单位,是恢复和并发控制的基本单位;通常以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。
2数据库恢复:指把数据库从错误状态恢复到某一已知的正确状态(亦称一致状态或完整状态)的过程。
3静态转储:指在系统中无事务运行时进行的转储操作。转储期间不允许对数据库的任何存取、修改活动,得到的一定是一个数据一致性的副本。
4动态转储:转储操作与用户事务并发进行,转储期间允许对数据库进行存取或修改。
二、填空题
1事务的基本特性包括 原子性、一致性、隔离性和持续性。
2常用的数据库恢复技术(建立冗余数据技术)主要有数据库转储和登记日志文件。
三、问答题
1什么是事务?简述事务的基本特性。
所谓事务是一用户定义的一个数据库操作序列,这些操作要么全做,要么全部做,是一个不可分割的工作单位,是恢复和并发控制的基本单位;通常以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。事务具有以下四个基本特性:
原子性:事务是数据库的逻辑工作单位,一个事务的诸操作要么都做,要么都不做。
一致性:指事务执行前后必须保持数据库的逻辑一致性。一致性和原子性是密切相关的。
隔离性:指并发执行的各个事务之间不能互相干扰。
持续性:又称为持久性或永久性,是指一个事务的操作提交后,其对数据库的改变是永久的,属于物理的而非逻辑的。
2何谓静态转储?何谓动态转储?它们各有什么优缺点?
静态转储指在系统中无事务运行时进行的转储操作。转储期间不允许对数据库的任何存取、修改活动,得到的一定是一个数据一致性的副本。
动态转储的转储操作与用户事务并发进行,转储期间允许对数据库进行存取或修改。
静态转储实现简单,但必须等待正运行的事务结束后才能进行,新的事务也必须等转储结束后方可开始,降低了数据库的可用性。
动态转储不用等待正在运行的用户事务结束即可开始,也不会影响新事务的运行,但不能确保副本中的数据一定正确有效,需要配合日志记录才能完

成故障恢复。
3日志文件需要登记的内容包括哪些?
各个事物的开始(BEGIN TRANSACTION)标记;
各个事物的结束(COMMIT或ROLLBACK)标记;
各个事物的所有更新操作。
4日志文件的作用有哪些?
事物故障恢复和系统故障恢复必须用日志文件;
在动态转储方式中必须建立日志文件,后备副本和日志文件结合起来才能有效地恢复数据库;
在静态转储方式中,也可以建立日志文件。
5简述事务故障的恢复步骤。
反向扫描日志文件(即从最后向前扫描日志文件), 查找该事务的更新操作。
对该事务的更新操作执行逆操作。即将日志记录中“更新前的值” 写入数据库。
继续反向扫描日志文件, 查找该事务的其他更新操作, 并做同样处理。
如此处理下去, 直至读到此事务的开始标记, 事务故障恢复就完成了。
6简述系统故障的恢复步骤。
正向扫描日志文件(即从头扫描日志文件),找出重做(REDO) 队列和撤销 (Undo)队列;
对撤销(Undo)队列事务进行撤销(UNDO)处理:即反向扫描日志文件, 对每个UNDO事务的更新操作执行逆操作,即将日志记录中“更新前的值”写入数据库;
对重做(Redo)队列事务进行重做(REDO)处理:即正向扫描日志文件, 对每个REDO事务重新执行登记的操作。即将日志记录中“更新后的值”写入数据库。
7检查点记录的内容包括哪些?
建立检查点时刻所有正在执行的事物清单;
这些事物最近一个日志记录的地址。重新开始文件用来记录各个检查点记录在日志文件中的地址。
8简述利用检查点的数据库恢复步骤。
从重新开始文件中找到最后一个检查点记录在日志文件中的地址, 由该地址在日志文件中找到最后一个检查点记录
由该检查点记录得到检查点建立时刻所有正在执行的事务清单ACTIVE-LIST,然后建立两个事务队列(UNDO-LIST、REDO-LIST),并把ACTIVE-LIST暂时放入UNDO-LIST队列, REDO队列暂为空。
从检查点开始正向扫描日志文件, 直到日志文件结束。如有新开始的事务Ti, 把Ti暂时放入UNDO-LIST队列,如有提交的事务Tj, 把Tj从UNDO-LIST队列移到REDO-LIST队列,直到日志文件结束。
对UNDO-LIST中的每个事务执行UNDO操作,对REDO-LIST中的每个事务执行REDO操作。

第11章 并发控制
在数据库中为什么要并发控制?
答:数据库是共享资源,通常有许多个事务同时在运行。当多个事务并发地存取数据库时就会产生同时读取和/或修改同一数据的情况。若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。所以数据库管理系统必须提供并发控制机制。

2 .并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情

况?
答:并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读“脏’夕数据。 ( l )丢失修改(lost update ) 两个事务 Tl 和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了) Tl 提交的结果,导致 Tl 的修改被丢失。 ( 2 )不可重复读( Non 一 Repeatable Read ) 不可重复读是指事务 Tl 读取数据后,事务几执行更新操作,使 Tl 无法再现前一次读取结果。( 3 )读“脏”数据( Dirty Read ) 读“脏’夕数据是指事务 Tl 修改某一数据,并将其写回磁盘,事务几读取同一数据后, Tl 由于某种原因被撤销,这时 Tl 已修改过的数据恢复原值,几读到的数据就与数据库中的数据不一致,则几读到的数据就为“脏”数据,即不正确的数据。避免不一致性的方法和技术就是并发控制。最常用的技术是封锁技术。也可以用其他技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制。

3 .什么是封锁?基本的封锁类型有几种?试述它们的含义。
答:封锁就是事务 T 在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务 T 就对该数据对象有了一定的控制,在事务 T 释放它的锁之前,其他的事务不能更新此数据对象。封锁是实现并发控制的一个非常重要的技术。
基本的封锁类型有两种:排它锁( Exclusive Locks ,简称 x 锁)和共享锁 ( Share Locks,简称 S 锁)。排它锁又称为写锁。若事务 T 对数据对象 A 加上 X 锁,则只允许 T 读取和修改 A ,其他任何事务都不能再对 A 加任何类型的锁,直到 T 释放 A 上的锁。这就保证了其他事务在 T 释放 A 上的锁之前不能再读取和修改 A 。共享锁又称为读锁。若事务 T 对数据对象 A 加上 S 锁,则事务 T 可以读 A但不能修改 A ,其他事务只能再对 A 加 S 锁,而不能加 X 锁,直到 T 释放 A 上的 S 锁。这就保证了其他事务可以读 A ,但在 T 释放 A 上的 S 锁之前不能对 A 做任何修改。

4 .如何用封锁机制保证数据的一致性?
答: DBMS 在对数据进行读、写操作之前首先对该数据执行封锁操作,例如下图中事务 Tl 在对 A 进行修改之前先对 A 执行 xock ( A ) ,即对 A 加 x 锁。这样,当几请求对 A 加 x 锁时就被拒绝,几只能等待 Tl 释放 A 上的锁后才能获得对 A 的 x 锁,这时它读到的 A 是 Tl 更新后的值,再按此新的 A 值进行运算。这样就不会丢失 Tl 的更新。

5 .什么是活锁?什么是死锁?
如果事务 Tl 封锁了数据 R ,事务几又请求封锁 R ,于是几等待。几也请求封锁 R ,当 Tl 释放了 R 上的封锁之后系统首先批准了几的请求,几仍然等待。然后几又请求封锁 R ,当几释放了 R

上的封锁之后系统又批准了几的请求 … … 几有可能永远等待,这就是活锁的情形。活锁的含义是该等待事务等待时间太长,似乎被锁住了,实际上可能被激活。如果事务 Tl 封锁了数据 Rl ,几封锁了数据凡,然后 Tl 又请求封锁几,因几已封锁了几,于是 Tl 等待几释放几上的锁。接着几又申请封锁 Rl ,因 Tl 已封锁了 Rl ,几也只能等待 Tl 释放 Rl 上的锁。这样就出现了 Tl 在等待几,而几又在等待 T }的局面, T }和几两个事务永远不能结束,形成死锁。
6 .试述活锁的产生原因和解决方法。
答:活锁产生的原因:当一系列封锁不能按照其先后顺序执行时,就可能导致一些事务无限期等待某个封锁,从而导致活锁。避免活锁的简单方法是采用先来先服务的策略。当多个事务请求封锁同一数据对象时,封锁子系统按请求封锁的先后次序对事务排队,数据对象上的锁一旦释放就批准申请队列中第一个事务获得锁。

11 .请给出检测死锁发生的一种方法,当发生死锁后如何解除死锁?
答:数据库系统一般采用允许死锁发生, DBMS 检测到死锁后加以解除的方法。 DBMS 中诊断死锁的方法与操作系统类似,一般使用超时法或事务等待图法。超时法是:如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。超时法实现简单,但有可能误判死锁,事务因其他原因长时间等待超过时限时,系统会误认为发生了死锁。若时限设置得太长,又不能及时发现死锁发生。 DBMS 并发控制子系统检测到死锁后,就要设法解除。通常采用的方法是选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有锁,使其他事务得以继续运行下去。当然,对撤销的事务所执行的数据修改操作必须加以恢复。

12 .什么样的并发调度是正确的调度?
答:可串行化( Serializable )的调度是正确的调度。可串行化的调度的定义:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行执行它们时的结果相同,称这种调度策略为可串行化的调度。
11.试证明,若并发事务遵守两段锁协议,则对这些事务的并发调度是可串行化的。
证明:首先以两个并发事务 Tl 和T2为例,存在多个并发事务的情形可以类推。根据可串行化定义可知,事务不可串行化只可能发生在下列两种情况:
( l )事务 Tl 写某个数据对象 A ,T2读或写 A ;
 ( 2 )事务 Tl 读或写某个数据对象 A ,T2写 A 。
 下面称 A 为潜在冲突对象。
 设 Tl 和T2访问的潜在冲突的公共对象为{A1,A2 … , An }。不失一般性,假设这组潜在冲突对象中 X =(A 1 , A2 , … , Ai }均符合情况 1 。 Y

={A i + 1 , … , An }符合所情况( 2 )。
 VX ∈ x , Tl 需要 XlockX ①
T2 需要 Slockx 或 Xlockx ②
1 )如果操作 ① 先执行,则 Tl 获得锁,T2等待
由于遵守两段锁协议, Tl 在成功获得 x 和 Y 中全部对象及非潜在冲突对象的锁后,才会释放锁。
这时如果存在 w ∈ x 或 Y ,T2已获得 w 的锁,则出现死锁;否则, Tl 在对 x 、 Y 中对象全部处理完毕后,T2才能执行。这相当于按 Tl 、T2的顺序串行执行,根据可串行化定义, Tl 和几的调度是可串行化的。
2 )操作 ② 先执行的情况与( l )对称因此,若并发事务遵守两段锁协议,在不发生死锁的情况下,对这些事务的并发调度一定是可串行化的。证毕。
13 .为什么要引进意向锁?意向锁的含义是什么?
答:引进意向锁是为了提高封锁子系统的效率。该封锁子系统支持多种封锁粒度。原因是:在多粒度封锁方法中一个数据对象可能以两种方式加锁 ― 显式封锁和隐式封锁。因此系统在对某一数据对象加锁时不仅要检查该数据对象上有无(显式和隐式)封锁与之冲突,还要检查其所有上级结点和所有下级结点,看申请的封锁是否与这些结点上的(显式和隐式)封锁冲突,显然,这样的检查方法效率很低。为此引进了意向锁。意向锁的含义是:对任一结点加锁时,必须先对它的上层结点加意向锁。例如事务 T 要对某个元组加 X 锁,则首先要对关系和数据库加 ix 锁。换言之,对关系和数据库加 ix 锁,表示它的后裔结点 ― 某个元组拟(意向)加 X 锁。引进意向锁后,系统对某一数据对象加锁时不必逐个检查与下一级结点的封锁冲突了。例如,事务 T 要对关系 R 加 X 锁时,系统只要检查根结点数据库和 R 本身是否已加了不相容的锁(如发现已经加了 ix ,则与 X 冲突),而不再需要搜索和检查 R 中的每一个元组是否加了 X 锁或 S 锁。
14 .试述常用的意向锁: IS 锁、 ix 锁、 SIX 锁,给出这些锁的相容矩阵。
答: IS锁:如果对一个数据对象加 IS 锁,表示它的后裔结点拟(意向)加 S 锁。例如,要对某个元组加 S 锁,则要首先对关系和数据库加 IS 锁
IX 锁:如果对一个数据对象加 ix 锁,表示它的后裔结点拟(意向功口 X 锁。例如,要对某个元组加 X 锁,则要首先对关系和数据库加 ix 锁。
SIX 锁:如果对一个数据对象加 SIX 锁,表示对它加 S 锁,再加 IX 锁,即 SIX = S + IX 。
15并发调度的可串行性
计算机系统对并发事务中并发操作的调度是随机的,而不同的调度可能会产生不同的结果,那么哪个结果是正确的,哪个是不正确的呢?
如果一个事务运行过

程中没有其他事务同时运行,也就是说它没有受到其他事务的干扰,那么就可以认为该事务的运行结果是正常的或者预想的。因此将所有事务串行起来的调度策略一定是正确的调度策略。虽然以不同的顺序串行执行事务可能会产生不同的结果,但由子不会将数据库置于不一致状态,所以都是正确的。
定义 多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同,我们称这种调度策略为可串行化(Serializable)的调度。
可串行性(Serializability)是并发事务正确性的准则。按这个准则规定,一个给定的并发调度,当且仅当它是可串行化的,才认为是正确调度。


相关文档
相关文档 最新文档