本文是关系数据理论章节的总结
关系模式由五部分组成,是一个五元组: R(U, D, DOM, F)
R是符号化的元组语义
U为一组属性
D为属性组U中的属性所来自的域
DOM为属性到域的映射
F为属性组U上的一组数据依赖
作为一个二维表,关系要符合一个最基本的条件:每一个分量必须是必不可分的数据项,满足这个条件的关系模式就属于第一范式(1NF)
数据依赖是一个关系内部属性与属性之间的一种约束关系,其中最重要的是函数依赖和多值依赖。
关系模式中存在的问题:
(1)数据冗余
浪费大量的存储空间:每一个系主任的姓名重复出现
(2)更新异常
更新数据时,维护代价大:某系更换系主任后,须修改有关的每一个元组。
(3)插入异常
如果一个系刚成立,尚无学生,则无法把这个系及其系主任存入数据库。
(4)删除异常
如果某个系的学生全部毕业了, 则在删除该系学生信息的同时,把这个系及其系主任的信息也丢掉了。
一个好的模式应当不会发生插入异常、删除异常和更新异常,数据冗余应尽可能少。
设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r 中不可能存在:两个元组在X上的属性值相等,而在Y上的属性值不等, 则称X函数确定Y或Y函数依赖于X,记作X→Y。
X→Y,但Y⊈X则称X→Y是非平凡的函数依赖。
X→Y,但Y⊆X 则称X→Y是平凡的函数依赖。
若X→Y,则X称为这个函数依赖的决定因素
若X→Y,Y→X,则记作X←→Y。
若Y不函数依赖于X,则记作X↛Y。
在R(U)中,如果X→Y,并且对于X的任何一个真子集X’, 都有 X’ ↛ Y, 则称Y对X完全函数依赖,记作X → Y。若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作X → Y。
在R(U)中,如果X→Y(Y⊈X),Y↛X,Y→Z,Z⊈Y, 则称Z对X传递函数依赖。
设K为R中的属性或属性组合。若K → U,则K称为R的一个候选码。
如果U部分函数依赖于K,即K → U,则K称为超码 。
若关系模式R有多个候选码,则选定其中的一个做为主码。
包含在任何一个候选码中的属性 ,称为主属性 不包含在任何码中的属性称为非主属性或非码属性。
整个属性组是码,称为全码。
关系模式 R中属性或属性组X 并非 R的码,但 X 是另一个关系模式的码,则称 X 是R 的外部码也称外码。
分类:
第一范式(1NF)
第二范式(2NF)
第三范式(3NF)
BC范式(BCNF)
第四范式(4NF)
第五范式(5NF)
一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合这种过程就叫规范化。
若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于任何一个候选码,则R∈2NF。
设关系模式R∈1NF,若R中不存在这样的码X、属性组Y及非主属性Z (Y⊇ Z), 使得X→Y,Y→Z成立,Y ↛ X不成立,则称R ∈ 3NF。
若R∈ 3NF,则每一个非主属性既不传递依赖于码,也不部分依赖于码。也就是说,可以证明R属于3NF,则必有R属于2NF。
通常认为BCNF是修正的第三范式,有时也称为扩充的第三范式。
设关系模式R∈1NF,若X →Y且Y ⊆ X时X必含有码,则R∈BCNF。换言之,在关系模式R中,如果每一个决定属性集都包含候选码,则R∈BCNF。
设R(U)是属性集U上的一个关系模式。X,Y,Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关。
若X→→Y,而Z=Ф,则称X→→Y为平凡的多值依赖。否则称X→→Y为非平凡的多值依赖。
关系模式R∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y ⊈ X),X都含有码,则R∈4NF。
如果一个关系模式是4NF, 则必为BCNF。
闭包(记作X+ )就是由一个属性直接或间接推导出的所有属性的集合。
例如:
f={a->b,b->c,a->d,e->f};
由a可直接得到b和d,间接得到c,
则a的闭包就是{a,b,c,d}
对于给定的关系R(A1,A2,…An)和函数依赖集F,可将其属性分为4类:
L类 : 仅出现在函数依赖左部的属性。
R类 : 仅出现在函数依赖右部的属性。
N类: 在函数依赖左右两边均未出现的属性。
LR类: 在函数依赖左右两边均出现的属性。
定理:
对于给定的关系模式R及其函数依赖集F,
若X(X∈R)是L类属性,则X必为R的任一候选码的成员。
推论:
对于给定的关系模式R及其函数依赖集F,
若X(X∈R)是L类属性,且X+包含了R的全部属性;
则X必为R的唯一候选码。