一、概述
1.1 关系模型
在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成。
用表格结构表示实体集,用外键(外码)表示实体间联系。
其中行表示元祖,列表示属性。
优点:
- 建立在严格的数据概念基础上
- 概念单一,结构简单、清晰,用户易懂易用
- 存取路径对用户透明,从而数据独立性、安全性好,简化数据库开发工作
缺点:由于存取路径透明,查询效率往往不如非关系数据模型
1.2 基本关系
基本关系具有以下6条性质:
(1)列是同质的,即每一列中的分量是同一类型的数据,来自同一个域。
(2)不同的列可出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。
(3)列的顺序无所谓,即列的次序可以任意交换。
(4)任意两个元祖不能完全相同。
(5)行的顺序无所谓,即行的次序可以任意交换。
关系的描述称为关系模式,关系模式是一个五元组,形式化地表示为:
R(U,D,DOM,F)
R:关系名
U:组成该关系的属性名集合
D:属性组U中属性所来自的域
DOM:属性向域的映像集合
F:属性间的数据依赖关系集合
1.3 完整性约束
(1)实体完整性:指关系的主关键字不能重复也不能取空值。
(2)参照完整性:定义建立关系之间联系的主关键字与外部关键字引用的约束条件。
(3)用户定义完整性:根据应用环境的要求和实际的需要,对某一具体应用所涉及的数据提出约束性条件。
二、关系运算
2.1 常用的关系操作
- 查询:选择、投影、连接、除、并、交、差
- 数据更新:插入、删除、修改
- 传统的集合运算是二目运算,包括并、交、差、广义笛卡尔积
- 专门的关系运算包含:选择、投影、连接、除4种运算。
2.2 关系运算
(1)投影操作从关系R中选择出若干属性列组成新的关系,该操作对关系进行垂直分割,消去某些列,并重新安排列的顺序,再删去重复元组,选择满足关系的列。
(2)选择:在关系R中选择满足给定条件的元祖,选择满足关系的行。
(3)θ连接:从两个关系的笛卡尔积中选取属性间满足一定条件的元祖。
- 一般连接
- 等值连接:从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元祖
- 自然连接:是一种特殊的等值连接(两个关系中进行比较的分量必须是相同的属性组;在结果中把重复的属性列去掉)
(4)外连接:关系R、S进行自然连接时,如果把舍弃的元祖也保存在结果关系中,而在其他属性上填空值(Null)。
(5)左连接:关系R、S进行自然连接时,如果把只把左边关系R中要舍弃的元祖保留就叫做左外连接。
(6)右连接:关系R、S进行自然连接时,如果把只把右边关系R中要舍弃的元祖保留就叫做右外连接。
(7)除法
三、查询优化
优化的准则:
- 提早执行选择运算,目的:减少中间结果
- 合并乘积与选择运算为连接运算,目的:避免扫描大的关系
- 将投影运算与其他运算同时进行,目的:避免重复扫描关系
- 将投影运算与二目运算结合起来。目的:减少扫描关系的遍数
- 在执行连接前对关系适当的预处理:索引连接法,排序合并连接法
- 存储公共子表达式。目的:只需检索中间结果,不需重复计算
四、关系数据库设计基础
4.1 函数依赖
定义:设U{A1,A2,... ,An}是属性集合,R(U)是U上的一个关系,x、y是U的子集。若对于R(U)下的任何一个可能的关系,均有x的一个值对应于y的唯一具体值,称y函数依赖于x,记为x→y。
4.2 其他函数依赖
函数依赖中还可细分为多种函数依赖
- 部分函数依赖
- 完全函数依赖
- 传递函数依赖
(1)部分函数依赖
设R(U)是属性集U上的关系,x、y是U的子集,x’是x的真子集,若x→y,且x’→y,则称y部分依赖x,记为 → Y。
(2)完全函数依赖
所谓完全依赖是指在依赖关系的决定项(即依赖关系的左项)中没有多余属性,有多余属性就是部分依赖。
(3)传递函数依赖
在关系模式R(U)中,设X、Y、Z是U的不同的属性子集,如果X确定Y、Y确定Z,且有X不包含Y,Y不确定X,(X∪Y)∩Z=空集合,则称Z传递函数依赖于X。
4.3 规范化理论
设有一个关系模式R(SNAME,CNAME,TNAME,TADDRESS),其属性分别表示学生姓名、课程名、任课教师姓名和任课教师地址。
这个模式存在下列存储异常问题。
(1)数据冗余
(2)修改异常
(3)插入异常
(4)删除异常
4.4 范式
(1)第一范式(1NF)
如果关系模式R的每个关系r的属性值都是不可分的原子值,那么称R是第一范式的模式,r是模式化的关系。
说明:在任何一个关系数据库中,第一范式是对关系模式的基本要求,不满足第一范式的数据库就不是关系数据库。
(2)第二范式(2NF)
表中的属性必须完全依赖于全部主键,而不是部分主键。所以只有一个主键的表如果符合第一范式,那一定是第二范式。
(3)第三范式(3NF)
如果关系模式R是1NF,且每个非主属性都不传递依赖于R的候选码。
(4)BC范式
若关系模式R是1NF,且每个属性都不传递依赖于R的候选码,那么称R是BCNF模式。
4.5 模式分解及分解后特性
(1)分解
- 分解具有“无损连接性”
- 分解要“保持函数依赖”
- 分解既要“无损连接性”,又要具有“保持函数依赖”
(2)有损连接
(3)保持函数依赖