数据库系统概念复习纲
题型设置
大题(4)
1. 关系代数(25)
2.
a) 写结果
b) 处理空值空表
SQL(25)
a) 单表查询
b) 多表连接查询
c) 减法
d) 除法
e) 聚集函数
f) with(复杂查询、临时表格)
g) update/delete
3. E-R(10)
4. 规范化(10)
简答(5-6)
1. 事务可串行化:写调度
2. 索引
3. 查询优化(怎么做成最优的关系代数)
4. 数据库基本概念
5. 关系基本概念(空值的作用、空值的运算)
6. 码(外码)
Chapter 1
DBMS:由一个相互关联的数据集合和一组用以访问这些数据的程序组成,这个数据集
合通常称作数据库(Database),其中包含了关于某个机构的信息。或简述为系统软件,
对数据库进行统一管理和控制。
数据:数据(Data)是数据库中存储的基本对象。数据即描述事物的符号记录。
数据结构:
逻辑结构:数据之间存在的逻辑关系
物理结构:数据在计算机内的存储方式
数据库
定义:数据库(Database,简称 DB)是长期储存在计算机内、有组织的、可共享的大量
数据集合
特征
数据按一定的数据模型组织、描述和储存
可为各种用户共享
冗余度较小
数据独立性较高
易扩展
数据库系统:数据库系统(Database System,简称 DBS)是指在计算机系统中引入数据
库后的系统
数据视图
物理层:描述数据存储
逻辑层:描述存储在数据库中的数据,以及数据之间的关系
视图层:最高层次的抽象,只描述整个数据库的某部分数据(视图层提供了防止用
户访问数据库的某些部分的安全性机制)
实例与模式
模式–数据库的总体设计
物理模式:在物理层描述的数据库设计
逻辑模式(子模式):在逻辑层描述的数据库设计
实例–特定时刻存储在数据库中的信息的集合
类似于一个变量的值
数据独立性:数据独立性是指应用程序与 DB 的数据结构之间相互独立
物理数据独立性
存储结构改变时,修改模式/内模式映象,使模式保持不变,从而应用程序可
以保持不变,称为数据的物理独立性
逻辑数据独立性
当模式改变时,修改外模式/模式映象,使外模式保持不变,从而应用程序可
以保持不变,称为数据的逻辑独立性
三级模式结构
描述:为了提高数据的物理独立性和逻辑独立性,使数据库的用户观点,即用户
看到的数据库,与数据库的物理方面,即实际存储的数据库区分开来,数据库系
统的模式是分级的,美国数据系统语言协商会提出模式、外模式、存储模式三级
模式的概念
与独立性的联系:三级模式之间有两级映象。(其他见前一点数据独立性)
数据模型
ER 模型直接表示实体类型及实体间联系,与计算机系统无关,充分反映用户的
需求,用户容易理解
层次模型的数据结构为树结构,记录之间联系通过指针实现,查询较快,但DML
属于过程化的,操作复杂
网状模型的数据结构为有向图,记录之间联系通过指针实现,查询较快,并且容
易实现M:N 联系,但DML 属于过程化的语言,编程较复杂。
关系模型的数据结构为二维表格,容易为初学者理解。记录之间联系通过关键码
实现。DML 属于非过程化语言,编程较简单。
面向对象模型能完整描述现实世界的数据结构,具有丰富的表达能力,能表达嵌
套、递归的数据结构。但涉及的知识面较广,用户较难理解
数据库语言
DML(Data Manipulation Language):操纵那些按照某种适当的数据模型组织起
来的数据的语言
DDL(Data Definition Language):用于定义数据库模式以及其他特征的语言
数据存储和查询
存储管理器是一个程序模块,提供了数据库中存储的低层数据与应用程序以及向系
统提交的查询之间的接口
查询处理器
DDL解释器:它解释DDL语句,并将这些定义记录在数据字典中
DML编译器:将查询语言中的DML语句翻译成为一个执行方案
查询执行引擎:执行由DML编译器产生的低级指令
Chapter 2 & Chapter 6
关系数据库
关系数据库是表的集合
关系模型
列首称为属性
每个属性有一组允许的值,称为该属性的域
关系是一系列域上的笛卡尔积的子集
元组(代替表中的行)是以所有元组集为域的变量
域是原子的
空值或值null是所有可能的域的成员,表明值未知或不存在。
即空值就是表示“无意义”,当实体在某个属性上没有值时设为null;
或者表示“值未知”,即值存在,但目前没有获得该信息;
当空值参与运算,结果为空值。
码:能唯一标识实体的属性集,他是整个实体集的性质,而不是单个实体的性质。
外码:一个关系模式r1可能在它的属性中包含另一个关系模式r2的主码,这个属性
在上称作在r1上参照r2的外码( r1和r2可以是同一个关系)。
关系r1称作外码依赖的参照关系
关系r2称作外码的被参照关系
超码:一个或多个属性的集合,这些属性的组合可以使我们在一个关系中唯一地
标识一个元组。
候选码:它们的任意真子集都不能成为超码,这样的最小超码成为候选码。
主码:代表被数据库设计者选中的、用来在同一关系中区分不同元组的候选码。
实体完整性约束:关系的主码中的属性值不能为空值
关系代数运算
基本运算
一元运算
选择
投影
更名
多元运算
笛卡儿积
并
集合差
其它运算
集合交
θ连接
定义:从两个关系的广义笛卡儿积中选取给定属性间满足一定条件的元组
A,B为R和S上度数相等且可比的属性列
为算术比较符,为等号时称为等值连接
表示:
自然连接
对于 r 中的每个元组tr和 s 中的每个元组ts所组成的元组对
如果tr 和 ts 在R S的属性上有相同的值,则在结果中加入一个元组 t ,
并且t 在r 上和tr有相同的值 t ,在s 上和ts有相同的值
除
给定两个关系r(R)和s(S),并且S R ,则r s是满足t x s r的最大的关系
t(R-S)
特性:①只取除尽记录②只除重复字段③多字段下强调其余字段全相同
赋值
外连接
所有的包含null 比较运算都被定义为false
分类:左外连接、右外连接、全外连接
扩展运算
广义投影
广义投影运算通过允许在投影列表中使用算数函数来对投影进行扩展
E 是任意关系代数表达式
F1, F2, …, Fn 是涉及常量以及 E 的模式中属性的算术表达式
聚集函数和聚集运算
分类:
avg: 平均值 min: 最小值 max: 最大值
sum: 求和 count: 计数
表示:在关系代数中
E 是任一关系代数表达式
G1, G2 …, Gn 是用于分组的一系列属性(可以为空)
每个Fi 是一个聚集函数
每个Ai 是一个属性名
空值处理
元组的一些属性可以为空值,用 null 表示
null 代表一个值未知或不存在,空值是一种状态,不是一个明确的值
含有 null 的算术表达式的结果为 null
聚集函数直接忽略空值(比如在SQL里)
在去重和分组运算中,null 和其他值一样,两个null 被看作是相同的值 (比
如在SQL里)
含有空值的比较运算的结果是一个特殊的值:unknown
使用 unknown 的三值逻辑:
OR: (unknown or true) = true,
(unknown or false) = unknown
(unknown or unknown) = unknown
AND: (true and unknown) = unknown,
(false and unknown) = false,
(unknown and unknown) = unknown
NOT: (not unknown) = unknown
元组关系演算(与域关系演算近似,故略之)
谓词演算公式
属性和常量的集合
比较运算符的集合(示例: ,, , , , )
连词的集合:and (), or (v)‚ not ()
蕴含(): x y,如果x为真,则y也为真
x y x v y
量词的集合:
t r (Q (t )) 在关系 r 里“存在”一个元组 t 则谓词Q (t )为真
t r (Q (t )) Q对关系 r 里的“所有”元组 t 都为真
元组关系
元组关系演算是非过程化的查询语言,查询表达的形式为
{t | P (t ) }
表示它是所有使谓词P为真的元组 t 的集合
t为元组变量,t [A ] 表示元组 t 在属性 A 上的值
t r 表示元组 t 在关系 r 中
P 是一个类似于谓词演算的公式
元组关系演算与关系代数的等价性
投影 ∏A( R ) = { t | sR (t[A] = s[A] ) }
选择 F(A)(R) = { t | tR F(t[A]) }
广义笛卡儿积 R(A) S(B) = { t | uRsS( t[A] = u[A] t[B] = s[B])}
并 RS={ t | tR tS}
差 RS={ t | tR ┑tS}
Chapter 3 & Chapter 4 & Chapter 5
解释与限定
主码约束
主码值不允许空,也不允许出现重复
意义:关系对应到现实世界中的实体集,元组对应到实体,实体是相互可区分
的,通过主码来唯一标识,若主码为空,则出现不可标识的实体,这是不容许
的
参照完整性
定义:保证在一个关系中给定属性集上的取值也在另一关系的特定属性集的取
值中出现
相关:A 是一个属性的集合,R 和 S 是两个包含属性 A 关系,并且 A 是 S 的主
码 如果对于每个在 R 中出现的 A 在 S 中也出现,则 A 被称为 R 的外码
样例:如果关系 R2 的外部码 Fk 与关系 R1 的主码 Pk 相对应,则 R2 中的每
一个元组的 Fk 值或者等于 R1 中某个元组的 Pk 值,或者为空值。
嵌入式 SQL
操作方式的协调
执行方式的差别
SQL:一次一集合
主语言:一次一记录
游标
在查询结果的记录集合中移动的指针
若一个 SQL 语句返回单个元组,则不用游标
若一个 SQL 语句返回多个元组,则使用游标
故 INSERT、DELETE 和 UPDATE 语句;以及对于 SELECT 语句,如果已
知查询结果肯定是单值时,DML 语句不用游标
指令与描述(在此仅给出简单表示,详细说明见书本)
select [distinct][all][*][operator] A (from T)
where [operator] (= > < and or not) P【注意 null 处理】
from T (A,B 笛卡尔积 / A natural join B / A join B using P )
as (rename)
【记在 select 语句 A 后】 (即选出值作为新字段)
【记在 from 语句 T 后】 (即选出表作为新表名)
like P 【记在 where A 之后】 (取符合 P 记录的 A 字段值)
%为全局通配符 _为单字通配符
escape 转义 【格式: like W escape T】 (将 T 作为转义符匹配 W 记录)
order by 【记在 select 之后】 [desc/asc] (默认不加为升序)
between … and … 【记在 where 之后】 (选出其间的记录)
union (all) / intersect (all) / except (all) (字段名取出须完全相同)(在没有 all 的时候
自动去重,否则保持重复)
is null / or / and / not 【记在 where 语句 P 之后或之间】
聚集函数 avg / min / max / sum /count 【记在 select 语句之后 包裹属性】
group by 【记在所有语句最后】 (字段如无记录则不显示)
分组加入条件 having 【格式: group by A having C】
in 【记在 where 语句的属性之后,用于语句复合】
not in (不是不等于,同时支持元组返回)
比较函数 >some
=some <=some =some <>some >all =all <=all =all <>all
【记在 where 语句属性之后 记比较结果返回】
exists (返回存在的是否为空集) 【记在 where 语句之后,本语句为复合语句,
里面包裹一个完整 select 语句】
not exists (反义使用)
unique (返回唯一性) 【记在 where 语句之后,本语句为复合语句,里面包裹一
个完整 select 语句】
not unique (反义使用)
from clause (from 语句的嵌套子查询,子查询为临时关系,仅在语句内有效)
lateral (跟在复合语句之前,允许子查询访问父查询)【记在 from 语句之后】
with (临时定义表格,仅对此次 SQL 有效)【格式:with T(A1) as (select clause)】
delete 【格式:delete from T where P】(从 T 删除满足 P 的字段)
insert 【格式:insert into T (A…)values(A…)】(从 T 中插入对应的(若存在)或全部
字段的一条记录进入 T)
insert 语句可用 select 语句 where 嵌套复合进行条件匹配插入
Chapter 7
E-R 关系
实体相关
实体:是现实世界中可区别于所有其他对象的一个“事物”或“对象”
实体集:是相同类型即具有相同性质(或属性)的一个实体集合
属性:实体具有属性,属性是实体中每个成员所拥有的描述性性质,实体中的
每一个属性都有一个值
联系相关
联系:是指多个实体间的相互关联
联系集:是相同类型联系的集合,是 n>=2 个(可能相同的)实体集上的数学
联系
联系也可以具有描述性属性
联系集的度:参与联系集的实体集数目,数据库系统中的大部分联系集都是二
元的
属性相关
域或值集:每个属性都有一个可取值的集合
属性类型:
简单(Simple) and 复合(composite) 属性.
单值(Single-valued) and 多值(multivalued) 属性
例如: 多值属性: phone_numbers
派生(Derived) 属性:可以从别的相关属性或实体派生出来
例如: age, given date_of_birth
参与
实体集之间的关联称为参与,即实体参与联系
约束
映射基数
表示一个实体通过一个联系集能关联的实体的个数
分类
一对一(One to one)
一对多(One to many)
多对一(Many to one)
多对多(Many to many)
码
实体集(请参见第二章同名部分)
联系集
参与实体集合的主键组合形成联系集的超码
这意味着一对实体在特定联系集中至多有一个关系
实体-联系图
主要构件
分成两部分的矩形代表实体集
菱形代表联系集
属性在实体集矩形中列出
构成主码的属性以下划线标明
基数约束
我们在所讨论的联系集和实体集之间画一个箭头 () 或一条线段(—)来表示
基数约束
箭头表示对一、线段表示对多
三元关系
弱实体集
定义:如果一个实体集的所有属性都不足以形成主码,机没有足够的属性以形成主
码的实体集称作弱实体集.
依赖关系:弱实体集存在依赖于标识实体集
基数约束关系:标识性联系是从弱实体集到标识实体集多对一的,并且弱实体集在
联系中的参与是全部的
标识:关联弱实体集和标识性强实体集的联系集即标识性联系以双菱形表示
分辨符:
弱实体集的分辨符是使得我们可以区分依赖于特定强实体集的弱实体集中的
实体的属性的集合.