relation-theory
摘自《数据库系统概论》第六章
关系数据理论
1. 问题
针对一个具体问题,如何构造一个适合它的数据模式
即应该构造几个关系,每个关系由哪些属性组成等。
不好的关系模式:
- 数据冗余度太大,浪费存储空间
- 更新异常
- 插入异常
- 删除异常
数据依赖
属性值间的相互关联。是数据内在的性质,是语义的体现
主要介绍函数依赖。
不合适的数据依赖,容易造成上述的4个问题。
2. 规范化
2.1 函数依赖
给定关系模式R(U,
F)(本章忽略D域,DOM属性到域的映射),X和Y是U的子集。若对于R(U,
F)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于X”,记作
X称为这个函数依赖的决定属性组,也称为决定因素。
函数依赖是语义范畴的概念,只能根据数据的语义来确定函数依赖。例如“姓名->年龄”这个函数依赖只有在学生不重名的情况下成立。数据库设计者可以对现实世界作强制的规定。
函数依赖是指关系模式R在任何时刻的关系实例均要满足的约束条件。
非平凡函数依赖:
只讨论非平凡函数依赖。平凡函数依赖没有意义。
完全函数依赖:若
传递函数依赖:在R(U, F)中,如果
注意这里不能存在
,否则X与Y是等价的,Z直接依赖于X。
2.2 码
设K为关系模式R(U, F)中的属性或属性组合。若
若
,则K称为超码。
若关系模式R有多个候选码,则选定其中的一个作为主码。
主属性:包含在任何一个候选码的属性。
全码:整个属性组U是码。
外码:关系模式R的属性(组)X并非R的码,但X是另一个关系模式的码,则称X是R的外码。
主码与外码一起提供了表示关系间联系的手段。
2.3 范式 (不允许表中有表)
关系数据库的关系必须满足一定的要求。满足不同程度要求的为不同范式。
一个低一级范式的关系模式,通过模式分解,可以转换为若干个高一级范式的关系集合。这种过程叫做规范化。
1NF:
如果一个关系模式R的所有属性都是不可分的数据项,则
不允许表中有表。
2.4 2NF (非主属性不允许部分依赖)
若
采用投影分解法可将一个1NF关系分解为多个2NF关系,可一定程度上减轻原1NF关系存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。但并不能完全消除。
不是很懂这里非主属性的意义所在。
2.5 3NF (非主属性不允许传递依赖)
设关系模式
不是很懂这里Z是非主属性的意义所在。
不允许传递依赖,自然就不允许部分依赖。
2.6 BCNF(不依赖于非码)
设关系模式
BC范式首先解决了3NF中主属性存在的部分依赖问题,例如3NF中可能某候选码中的一个子集可以—>另一个主属性,但是BCNF要求必须是码或码的超集才可以->。其次解决了3NF中主属性存在的传递依赖问题,这个也是类似的情况。
2.7 多值依赖
给定关系模式R(U,F),X,Y,Z是U的子集,且Z=U-X-Y。关系模式R中多值依赖
等价定义
非平凡多值依赖:X->->Y,且Z不为空。若Z为空则为平凡多值依赖。
多值依赖的性质:
- 对称性:若X->->Y,则X->->Z。(可以画个二分图???)
- 传递性:若XYZ=U,X->->Y,Y->->Z,则X->->Z-Y
- 函数依赖是多值依赖的特殊情况
- 懒得写了
2.8 4NF
关系模式
4NF允许的非平凡多值依赖实际上是函数依赖。
3. 数据依赖的公理系统
模式分解算法的理论基础。函数依赖有一个有效且完备的公理系统——Armstrong公理系统
用途:
- 求给定关系模式的码
- 从一组函数依赖求得蕴含的函数依赖
逻辑蕴含:给定关系模式R(U, F),其任何一个关系r,若函数依赖X->Y都成立,则称F逻辑蕴含X->Y。
3.1 Armstrong公理系统
对关系模式 R(U, F) 有以下推理规则:
- 自反律:若
,则 为F所蕴含。 - 增广律:若
为F所蕴含,且 ,则 为F所蕴含。 - 传递律:若
和 为F所蕴含,则 为F所蕴含。
3.2 导出规则
可通过以上三条推理规则推出以下三条推理规则:
- 合并规则:由
得 。 - 伪传递规则:由
得 。 - 分解规则:由
得 。
根据合并和分解规则,可得引理
成立的充分必要条件是 成立。
3.3 函数依赖闭包
闭包:在关系模式R(U,
F)中为F所逻辑蕴含的函数依赖的全体叫做F的闭包,记为
属性集闭包:
判定
即判定 。
3.5 函数依赖集等价
如果
引理:F与G等价的充要条件是
3.6 最小依赖集
如果函数依赖集F满足:
- F中任一函数依赖的右部仅含有一个属性。
- F中不存在这样的函数依赖X->A,使得F与F-{X->A}等价。(即F中的函数依赖均不能由F中其他函数依赖导出)
- F中不存在这样的函数依赖X->A,X有真子集Z使得F-{X->A}U{Z->A}与F等价。(F中各函数依赖左部为最小属性集)
则F为极小函数依赖集。
定理:每一个函数依赖集F均等价于一个极小函数依赖集
F的最小依赖集不一定是唯一的
求最小依赖集步骤:
- 将F中的所有依赖右边化为单一元素
- 去掉F中的所有依赖左边的冗余元素
- 去掉F中的所有冗余关系
4. 保持函数依赖的模式分解
关系模式
若满足
4.1 转换为3NF
1、极小化处理
2、按照相同左部进行分组
可以证明得到的一定是一系列3NF,具体证明在书P190-191
作业
1、设有关系模式
(1). 计算
解:设
计算
计算
因此
设
计算
计算
因此
(2). 求
解:求出单个属性所对应的属性闭包:
由于只有
可得
通过额外枚举,可以发现只有上述
(3).
解:由于
因此
2、设有关系模式
解:
首先将所有函数依赖的右边转换为单一属性:
然后去除所有函数依赖的左边的冗余属性:
考虑函数依赖
考虑
考虑
考虑
此时
考虑
考虑
此时
考虑
考虑
故得到
3、设有关系模式
解:成立。证明如下:
令
计算
计算
4、试用Armstrong公理系统推导出下面的推理规则:若
解:首先根据增广率,可由
再根据传递率,可由
5、已知学生关系模式
(1)写出关系模式
解:
主码:
(2)原关系模式
解:为第一范式。首先对于关系模式
其次在该关系模式中,非主属性
可以进行模式分解:
(3)将关系分解成第三范式,并说明为什么?
解:在(2)的基础上进一步分解:
对于
对于
对于
6、设有关系模式
(1)试给出R的所有函数依赖(平凡函数依赖和部分函数依赖可不写)
解:
(2) 试给出R的所有候选码。
解:
不存在除
求出单个属性所对应的属性闭包:
可知
同样
除此之外,无其余候选码。
7、试证明任何一个二目关系模式
证明:
分以下三种情况讨论:
- 关系模式
主码为 ,即全码,此时显然为 。 - 主码为
,此时必有 , ,且 包含在码中,故满足 的定义。 - 主码为
,理由同上
证毕。
8、若
证明:利用反证法。
假设关系
由于
由于
因此
9、设属性
解:根据
根据
10、给定关系
A | B | C | D | E |
---|---|---|---|---|
试给出至少2个非对称多值依赖。注:仅写结果不分析不得分。
解:首先有多值依赖
其次有多值依赖