06-关系范式
基本定义
五元组
:关系模式名
:属性集
:属性的域
:到的映射
:函数依赖集
可省略,,变为三元组
数据库中和是明确的
当且仅当上的关系满足时,称为关系模式 的一个关系(合法的关系)
数据依赖
函数依赖
,函数确定于,函数依赖于
可以唯一确定,
不存在的值相同而的值不同的情况
是属性集
:不函数依赖于
中的所有关系都要满足中的所有函数依赖
函数依赖是语义范畴的概念
平凡/非平凡:是否是的子集
平凡的函数依赖:,
非平凡的函数依赖:,
完全/部分函数依赖:的子集能否唯一确定
完全函数依赖:,,,记作
部分函数依赖:,,,记作
传递依赖:,记作
若,则直接依赖于,不算传递函数依赖
若 和 是 1:1 映射关系,则 ,
若 和 是 1:N 映射关系,则
若 和 是 N:M 映射关系,则 不存在函数依赖
闭包
:的闭包,能唯一确定的属性集
生成方法:递归检查依赖,直到没有新的属性加入为止
多值依赖
某个属性同时决定两组不相关的信息,两组信息可以任意组合,产生冗余
设是属性集上的一个关系模式。是的子集,并且。关系模式中多值依赖 成立,当且仅当对的任一关系,给定的一对值,有一组的值,这组值仅仅决定于值而与值无关。
平凡的多值依赖:
对称性:
传递性:
函数依赖是特例:
并规则:
交规则:
差规则:
码
为 的一个属性集
候选码:可唯一确定元组的属性集
,是的一个候选码(最小超码)
超码:在候选码的基础上加其他属性
,是的一个超码(候选码的超集)
若有多个候选码,选一个作为主码
主属性:候选码中出现的属性
非主属性/非码属性:不包含在任意候选码中的属性
全码:整个属性组都是码,缺一不可
外码:关系模式中的属性集并非候选码,但在另一个关系模式中是候选码
范式
满足某一级别的关系模式的集合
:满足的所有条件
规范化:低一级范式通过模式分解转换成高一级范式模式的集合
1NF
每个分量都是不可分的原子值,不能出现多个项的情况
关系数据库的基本要求
缺点
数据冗余 & 更新异常:必须要更改所有的,以免数据不一致
插入异常:插入一个元组时,必须要插入所有的属性值,无法仅插入部分属性值
删除异常:删除某个元组后,可能会丢失仅依赖于该元组的其他信息
解决方法:分解成多个关系模式,用规范化理论消除不合适的数据依赖
2NF
非主属性必须完全依赖于候选码
消除部分依赖
表里属性都和候选码相关
改善:数据冗余、更新异常(但是仍然存在)
# 满足 1NF 不满足 2NF 的例子
表格 (A, B, C, D)
A -> C
(A,B) -> D
# 解决方案
表格1 (A, C)
A -> C
表格2 (A, B, D)
(A, B) -> D
3NF
消除传递依赖
关系模式中没有传递依赖,所有非主属性都直接依赖于候选码
表里属性都和候选码直接相关
改善:插入异常、删除异常(但是仍然存在)
若所有属性都是主属性,则满足 3NF
# 满足 2NF 不满足 3NF 的例子
表格 (A, B, C, D)
A -> B
B -> C
(A,B) -> D
# 解决方案
表格1 (A, B, D)
(A, B) -> D
表格2 (B, C)
B -> C
BCNF
除了候选码本身,不允许任何非候选码的属性集参与决定关系中的其他属性
所有非主属性都完全依赖于每个候选码
所有主属性的完全依赖于每个不包含他的候选码
没有任何属性完全函数依赖于非码的属性
彻底消除插入异常、删除异常
# 满足 3NF 不满足 BCNF 的例子
C -> B
(A, B) -> C
4NF 5NF
略。
判断流程
求候选码、主属性、非主属性
所有函数依赖的左边都是超码 -> BCNF
左边非超码的函数依赖的右边是主属性 -> 3NF
任意候选码的真子集都无法推出非主属性 -> 2NF
所有属性都是原子值 -> 1NF
最后更新于