数据库复习四
# 关系模式设计引论
一个完整的关系模型内涵的定义:
- 关系名
- 属性集
- 关系的域
- 属性到域上的映射关系
- 数据依赖
关系模式通常简记为:R (U,F)。
一个没有设计号的关系模式通常会有以下问题:
- 数据冗余太大
- 更新异常
- 插入异常
- 删除异常
# 函数依赖与规范化
规范化:指定义一组关系模式应符合的条件 (范式),而符合这些条件的关系模式就不存在某些操作异常,冗余也会减少
# 一、函数依赖 (简写 FD)
定义:设 R (U) 是一个属性集 U 上的关系模式,X 和 Y 是 U 的子集。若对于 R (U) 的任意一个可能的关系 r,r 中不可能存在两个元组在 X 上的属性值相等,而在 Y 上属性值不等,则称 "X 函数确定 Y" 或 "Y 函数依赖于 X",记作 (读作 X 决定 Y)。X 称为函数的决定因素
- 若,则 X 称为这个函数的决定属性组,也称为决定因素
- 若,则记作
- 若 不函数依赖与,则记作。
在一个关系模式 R (U) 中,对于 U 的子集 X 和 Y
- 若 X 和 Y 有 1:1 关系,则,记作
- 若 X 和 Y 有 1:m 关系,则记作,但。
- 若 X 和 Y 有 n:m 关系,则 X 和 Y 不存在任何函数依赖
# 1、完全函数依赖
定义:在关系模式 R (U) 中,如果,并且对于 X 的任何一个真子集,都有,则称 Y 完全依赖于 X,记作。
# 2、部分函数依赖
定义:在关系模式 R (U) 中,如果,存在 X 的真子集,有,则称 Y 部分依赖于 X,记作
# 3、传递函数依赖
定义:在关系模式 R (U) 中,如果,(),,,则有,称 Z 传递函数依赖于 X,记为:
注意:如果,即,则 Z 直接依赖于 X;如果,则
定义:设 K 为关系模式 R<U,F> 中的属性或属性组。若,则 K 称为 R 的一个候选码。若关系中有多个候选码,则选定其中的一个作为主码。候选码常常简称为码
主码的两个性质:
- 决定性:
- 最小性:,使得
主属性:所有候选码中出现的属性
非主属性:不出现在任何候选码中的属性
全码:由关系模式的所有属性构成码
# 二、关系模式的规范化
# 1、范式
范式是符合某一类满足一定要求的关系模式的集合
(1)
定义:如果一个关系模式 R 的所有属性都是不可分的基本数据项,则称关系 R 为第一范式的关系模式,简称关系 R 属于第一范式,记为
注意:第一范式是对关系模式的最起码的要求。不满足第一范式的数据库不能称为关系数据库。(由关系属性的原子性得出)。但是满足第一范式的关系模式并不一定是一个好的关系模式。
(2)
定义:若关系模式,并且每一个非主属性都完全函数依赖于 R 的码,则。
不属于 2NF 的关系模式存在的问题:
- 插入异常
- 删除异常
- 数据冗余度大
- 修改复杂
(3)
定义:若关系模式 R<U,F> 中若不存在这样的码 X,属性组 Y 及非主属性 Z (),使得,成立,则称。
说明:3NF 是指不含纯粹的非主属性对码的传递依赖的关系模式
不适于 3NF 的关系模式存在的问题:
- 插入异常
- 删除异常
- 数据冗余度大
- 修改复杂
定理:如果,则
证明:
设 不属于 2NF,则存在非主属性 A 部分依赖于码 K,,即不存在,使得;又,则;即存在,由 3NF 定义,R 不属于 3NF
推论:,则 R 中的每一个非主属性既不部分依赖于码,也不传递依赖于码
总结:
1NF 是指关系模式中所有属性都满足原子性,是关系模式的最低要求
2NF 是指关系模式中不存在非主属性 (组) 对码的部分依赖
3NF 是指关系模式中不存在非主属性 (组) 对码的传递依赖
范式级别越高,其存在的操作异常和数据冗余越小
(4)
定义:设关系模式,如果对于 R 的每个函数依赖,X 必包含码,则,又称修正 (或扩充) 的第三范式
结论:
证明:上式可写成
等价于
若,则存在码 X,属性组 Y 及非主属性 Z () 使得 成立,但是 Y 是属性组不一定含码
由 BCNF 定义得,因此结论成立
若,则 R 中所有非主属性对每一个码都完全函数依赖 (由 2NF 定义得到)
若,则 R 中所有主属性对每一个不包含它的码都完全函数依赖
若,则 R 中没有任何属性完全依赖于非码的任何一组属性
不属于 BCNF 的关系模式存在问题:
- 插入异常
- 删除异常
- 数据冗余度大
- 修改复杂
结论:BCNF 消除了主属性对码的部分依赖和传递依赖,在函数依赖的范畴内解决了数据插入异常和删除异常,但可能存在着数据冗余和修改复杂
# 三、数据依赖的公理系统
# 1、函数依赖的公理系统
定义:设关系模式 R<U,F>,其中 F 是属性 U 上的函数依赖集,,对其任何一个关系实例 r,若函数依赖 都成立,则称 F 逻辑蕴含,记为
Armstrong 公理系统:
设关系模式 R<U,F>,其中 F 是属性集 U 上的函数依赖集,对关系模式 R<U,F > 有以下推理规则:
- 自反律:若,则。
- 增广律:若,则
- 传递率:若,则。
- 合并规则:
- 分解规则:。
- 伪传递规则:。
模式分解的原则
- 分解保证无损连接性
- 分解至少应达到 3NF,尽可能达到 BCNF
- 分解应尽可能保持函数依赖和多值依赖
# 2、函数依赖集的闭包
定义:设关系模式 R<U,F> 中为 F 所逻辑蕴含的函数依赖的全体叫做 F 的闭包,即为
的意义:包含了给定函数依赖集 F (部分) 所蕴含的属性集 U 上的全部函数依赖。缺点:依赖信息太庞杂,难管理属性集的闭包
定义:设 F 为属性集 U 上的一组函数依赖,,X 关于函数依赖集 F 的闭包 能由 Armstrong 公理导出。
求 算法:
(1) 令;
(2) 令
(3) 若,或 算法结束, 否则,令 i=i+1,转 (2)
例:已知关系模式 R<U,F>,其中,求
解:,由 得到,由 得到,由 得到,此时,结束,因此