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