数据库系统概念复习笔记
基本介绍
数据库系统
数据库系统由一个相互关联的数据的集合和一组用以访问这些数据的程序组成。这个数据集合通常称作数据库。
数据库系统的主要目标是提供一种可以方便,高效地存取数据库信息的途径。
数据库系统的目的:能够持久性地存储,大量数据,用户数据独立性,原子性,减少冗余,一致性,完整性,高效存储和访问,并发访问,安全。
数据视图
数据抽象:视图层(外模式),逻辑层(模式),物理层(内模式)。
实例:特定时刻存储在数据库中的信息的集合称作数据库的一个实例。
模式:数据库的总体设计称作数据库模式。
物理数据独立性:应用程序如果不依赖与物理模式,它们就被称为是具有物理独立性,因此即使物理模式改变了它们也无需重写。
数据模型:关系模型,实体-联系模型,基于对象的数据模型,半结构化数据模型。网状数据模型,层次数据模型。
* 关系模型
* 实体-联系模型
* 层次数据模型
* 网状数据模型
数据库语言
数据操纵语言(DML):它使得用户可以访问或操纵那些按照某种适当的数据模型组织起来的数据。(查询,插入,删除,更新)
* 过程化DML:要求用户指定需要什么数据以及如何获得这些数据。
* 声明式DML:(非过程化DML)只要求用户指定需要什么数据,而不声明如何获得这些数据。
DML中涉及信息检索的部分称作查询语言。(实践中常把查询语言和数据操纵语言作为同义词使用)
Pure:关系代数,元组关系演算,域关系演算。
Commercial:SQL。
数据定义语言(DDL):数据库模式是通过一系列定义来说明的,这些定义由数据定义语言来表达。
DDL的输出放在数据字典中,数据字典包含了元数据
,元数据是关于数据的数据。可以把数据字典看作一种特殊的表,这种表只能由数据库系统本身(不是常规的用户)来访问和修改。在读取和修改实际的数据前,数据库系统先要参考数据字典。
数据字典包括:数据库模式和一致性约束。
一致性约束:域约束,参照完整性(主键,外键),断言,授权。
访问数据库:为了访问数据库,DML语言需要宿主语言来执行。有两种途径可以做到这一点:
*
通过提供应用程序接口(过程集),它可以用来将DML和DDL的语句发送给数据库,再取回结果。与C语言一起使用的开放数据库连接(ODBC)标准,是一种常见的应用程序接口标准。Java数据库连接(JDBC)标准为Java语言提供了相应的特性。
* 通过扩展宿主语言的语法,在宿主语言的程序中嵌入DML调用。通常用一个特殊字符作为DML调用的开始,并且通过预处理器,称为DML预编译器
,来将DML语句转变成宿主语言中的过程调用。
数据库设计
数据库设计
* 全面刻画预期的数据库用户的数据需求。
* 选择一个数据模型,并运用该选定的数据模型的概念,将那些需求转换成一个数据库的概念模式。(概念设计阶段=逻辑设计阶段+物理设计阶段)
实体-联系模型
数据库中的实体通过属性集合来描述。
同一类型的所有实体的集合称作实体集。
联系是几个实体之间的关联。
同一类型的所有联系的集合称作联系集。
一个重要的约束是映射基数,它表示某个联系集能与一实体进行关联的实体数目。
规范化
设计关系数据库所用到的另外一种方法是通常被称为规范化
的过程。它的目标是生成一个关系模式集合,使我们存储信息时没有不必要的冗余,同时又能很轻易地检索数据。这种方法是设计一种符合适当的范式
的模式,为确定一个关系模式是否符合想要的范式,我们需要额外的关于数据库建模的现实世界中机构的信息。最常用的方法是使用函数依赖。
一个不好的设计可能会包括如下不良特性:
* 信息重复。
* 缺乏表达某些信息的能力。
数据存储和查询
存储管理器是数据库系统中负责在数据库中存储的底层数据与应用程序以及向系统提交的查询之间提供接口的部件。
* 存储管理器负责与文件管理器进行交互。
* 存储管理器负责数据库中数据的存储,检索和更新。
存储管理器部件包括:权限及完整性管理器,事务管理器,文件管理器,缓冲区管理器。
存储管理器的数据结构,作为系统物理实现的一部分:
* 数据文件:存储数据库自身。
* 数据字典:存储关于数据库结构的元数据,尤其是数据库模式。
* 索引:提供对数据项的快速访问。
查询处理器组件包括:
DDL解释器,DML编译器(一个查询通常可被翻译成多种等价的具有相同结果的执行方案的一种。DML编译器还进行查询优化,也就是从几种选择中选出代价最小的一种),查询执行引擎。
事务
事务是数据库应用中完成单一逻辑功能的操作集合。
ACID:原子性,一致性,独立性,持久性。
数据库体系结构
* 集中式数据库系统
* 客户服务器式数据库系统
* 并行数据库系统
* 分布式数据库系统
数据挖掘与信息检索
数据挖掘是指半自动地分析大型数据库并从中找出有用的模式的过程。数据挖掘就是在数据库中发现知识。
大型企业有各种不同的可用于业务决策的数据来源。要在这些各种各样的数据上高效地执行查询,企业建立了数据仓库。
文本结构是非结构化的,与关系数据库中严格的结构化数据不同。查询非结构化的文本数据被称为信息检索。
特种数据库
* 基于对象的数据模型
* 半结构化数据模型
数据库管理员
使用DBS的一个主要原因是可以对数据和访问这些数据的程序进行集中控制。对系统进行集中控制的人称作数据库管理员。
* 模式定义
* 存储结构及存取方式定义
* 模式及物理组织的修改
* 数据访问授权
* 日常维护
关系模型
关系用来指代表。
元组用来指代行。
属性用来指代列。
关系实例:一个关系的特定实例,也就是所包含的一组特定的行。
域:关于关系中的每个属性,都存在一个允许取值的集合,称为该属性的域。如果域中元素被看做是不可再分的单元,则域是原子的。
空:一个特殊的值,代表值未知或不存在。
数据库模式是数据库的逻辑设计。
数据库实例是给定时刻数据库中数据的一个快照。
超码是一个或多个属性的集合,这些属性的组合可以使我们在一个关系中唯一地标识一个元组。
候选码是最小的超码,它们的任意真子集都不能成为超码。
主码代表被数据库设计者选中的,主要用来在一个关系中区分不同元组的候选码。
外码:一个关系模式r1可能在它的属性中包括另一个关系模式r2的主码,这个属性在r1上称作参照r2的外码。关系r1也称为外码依赖的参照关系,r2叫做外码的
被参照关系。
事务
可串行化
冲突指令交换:
* read(Q)和write(Q)
* write(Q)和read(Q)
* write(Q)和write(Q)
如果调度SS可以经过一系列非冲突指令交换转换成S、S、,我们称SS和S,S,是冲突等价的。
不是所有的串行调度相互之间都冲突等价。
若一个调度SS与一个串行调度冲突等价,则称调度SS是冲突可串行化的。
冲突指令的事务TT指向调度T,T,,该调度是冲突可串行化的当且仅当图不循环。
可恢复调度
可恢复调度应满足:对于每对事务TiTi和TjTj,如果TjTj读取了之前由TiTi所写的数据项,则TiTi先于TjTj提交。
无级联调度
无级联调度应满足:对于每对事务TiTi和TjTj,如果TjTj读取了之前由TiTi所写的数据项,则TiTi必须在TjTj这一读操作前提交。
每一个无级联调度也都是可恢复调度。
并发控制:锁
共享锁:如果事务TiTi获得了数据项Q上的共享锁(S),则TiTi可读但不能写Q。
排他锁:如果事务TiTi获得了数据项Q上的排他锁(X),则TiTi既可读又可写Q。
实体—联系图
分成两部分的矩形代表实体集。第一部分包含实体集的名字,第二部分包含实体集中所有属性的名字。构成主码的属性以下划线标明。
菱形代表联系集。
未分割的矩形代表联系集的属性。
线段将实体集连接到联系集。
虚线将联系集属性连接到联系集。
双线显示实体在联系集中的参与度。
双菱形代表连接到弱实体集的标志性联系集。
映射基数
* 箭头表示一,线段表示多。
* l.h形式,l为最小的映射基数,h为最大的映射基数(*)。
弱实体集
没有足够的属性以形成主码的实体集称作弱实体集。有主码的实体集称作强实体集。
弱实体集必须与另一个称作标识的属主实体集关联才能有意义。
弱实体集存在依赖于标识实体集。标识实体集拥有它所标识的弱实体集。
将弱实体集与其标识实体集相连的联系称为标识性联系。
弱实体集的分辨符是使得我们进行区分弱实体集中的实体的属性集合。
弱实体集的主码由标识实体集的主码加上该弱实体集的分辨符构成。
* 弱实体集的分辨符以虚下划线标明,而不是实线。
* 关联弱实体集的标识性强实体集的联系集以双菱形表示。
* 如果弱实体集在联系中的参与是全部的,表示每个弱实体集中的元素都必须通过联系和标识性强实体集关联,则使用双线表明全部参与。
关系运算
关系代数
* 选择运算
* 投影运算
* 更名运算
* 交运算
* 集合差运算
* 笛卡尔积运算
元组关系演算
{t|P(t)}{t|P(t)}
表达式的安全性:元组关系公式P的域是P所引用的所有值的集合。
域关系演算
{<x1,……,xn>|P(x1,……,xn)}{<x1,……,xn>|P(x1,……,xn)}
总结
元组关系演算和域关系演算是非过程化语言,代表了关系查询语言所需的基本能力。基本关系代数是一种过程化语言,在能力上等价于被限制在安全表达式范围内的关系演算的这两种形式。
例题
巴斯范式
无损分解
如果用两个关系模式r1和r2替代r时没有信息损失,则我们称该分解是无损分解。
即把r投影至r1和r2上,然后计算投影结果的自然连接,我们仍然得到一模一样的r。
保持依赖
如果F中的每一个函数依赖都可以在分解得到的某一个关系上验证,那么这个分解就是保持依赖的。
第一范式
我们称一个关系模式R属于第一范式,如果R的所有集合的域都是原子的。
巴斯范式
具有函数依赖集F的关系模式R属于BCNF的条件是,对F+F+中所有形如α->β的函数依赖,下面至少有一项成立:
* α->β是平凡的函数依赖(即β∈α)。
* α是模式R的一个超码。
第三范式
具有函数依赖集F的关系模式R属于第三范式的条件是,对F+F+中所有形如α->β的函数依赖,下面至少有一项成立:
* α->β是平凡的函数依赖(即β∈α)。
* α是模式R的一个超码。
* β - α中的每个属性A都包含于R的一个候选码中。
注意上面的第三个条件并没有说单个候选码必须包含β - α中的所有属性;β - α中的每个属性A可能包含于不同的候选码中。
第四范式
函数依赖集和多值依赖集为D的关系模式R属于第四范式的条件是,对D+D+中所有形如α->->β的多值依赖,下面至少有一项成立:
* α->->β是平凡的多值依赖(即β∈α)。
* α是模式R的一个超码。
SQL
函数
create function funcName(parmName parmType) returns parmType begin declare
parmName parmType; ……return parm; end
过程
create produce proName(in parmName parmType,out parmName parmType) begin …… end
触发器
create trigger triName after update on tableName for each row begin …… end
热门工具 换一换