一个关系模式应当是一个五元组,但是由于D(域)和DOM(映射)与模式设计不大,所以此处把关系模式看成是一个三元组 R<U,F>。
R是表名字
U是一组属性
F是属性组U上的一组属性依赖
1NF
符合每一个分量都是不可分的数据项这一条件条件的二维表就是第一范式
数据依赖
数据依赖可以分为函数依赖以及多值依赖两种
函数依赖说白了,其实更像是一种映射的关系
这张关系表中就出现了以下几种问题:
- 数据冗余:Cno和Mname会出现多次
- 更新异常:由于数据冗余,要想更新表格,就得更新多次,有可能会出现数据不一致的问题
- 插入异常:如果一个系刚刚成立,没有学生,则无法将系主任和这个系存入数据库中
- 删除异常:如果一个系全部学生都毕业了,把学生删除了的话,这个系和系主任也会被删除
因此可以将此关系表改成以下三种关系模式:
S(Sno,Sdept,
S
n
o
→
S
d
e
p
t
Sno \rightarrow Sdept
Sno→Sdept)
SC(Sno,Cno,Grade,
(
S
n
o
,
C
n
o
)
→
G
r
a
d
e
(Sno,Cno) \rightarrow Grade
(Sno,Cno)→Grade)
DEPT(Sdept,Mname,
S
d
e
p
t
→
M
n
a
m
e
Sdept \rightarrow Mname
Sdept→Mname)
规范化
函数依赖
就是一个属性值唯一确定另一个属性值称作
X函数确定Y 或者 Y函数依赖于X
X
→
Y
X \rightarrow Y
X→Y
X → Y X \rightarrow Y X→Y并且 Y ⊆ X Y \subseteq X Y⊆X 则称 X → Y X \rightarrow Y X→Y是平凡的函数依赖
X → Y X \rightarrow Y X→Y并且 Y ⊈ X Y \nsubseteq X Y⊈X 则称 X → Y X \rightarrow Y X→Y是非平凡的函数依赖
对于任意关系模式,平凡函数依赖是必然成立的。
两个候选码一起确定一个属性值叫做完全函数依赖,记作
X
⟶
F
Y
X \overset F \longrightarrow Y
X⟶FY
两个候选码中的一个即可确定另一个属性值叫做部分函数依赖,记作
X
⟶
P
Y
X \overset P \longrightarrow Y
X⟶PY
如果 X → Y X \rightarrow Y X→Y( X ↚ Y X \not\leftarrow Y X←Y ), Y → Z Y \rightarrow Z Y→Z( Z ⊈ Y Z \nsubseteq Y Z⊈Y) ,则称Z对X传递函数依赖,记作 X ⟶ 传 递 Y X \overset {传递} \longrightarrow Y X⟶传递Y。
码
R<U,F>
若
K
⟶
F
U
K \overset F \longrightarrow U
K⟶FU ,则K是一个候选码
若
K
⟶
P
U
K \overset P \longrightarrow U
K⟶PU ,则K是超码
如果R中有多个候选码,则选定其中一个做为主码。
所谓非主属性,就是不包含在任何码中的属性(就是U-{所有码的并集})
所谓全码:整个属性组是码(任何U的真子集都不能是码)
2NF
2NF就是在1NF的基础上消除了非主属性对于码的部分函数依赖。(用我自己通俗的话讲就是,把码能部分函数依赖【大多数应该是两个码中的一个就能】确定的属性剥离)
3NF
一个属于1NF的属性组,不存在X->Y(Y不能推出X),Y->Z则是第三范式
3NF就是在2NF的基础上消除了非主属性对于码的传递函数依赖(就是码可以传递得到的属性值剥离出来)
二元关系必是传递依赖
BCNF
在关系模式R<U,F>中,如果每一个决定属性集都包含候选码,则R∈BCNF
多值依赖
用我自己的话来说就是多个属性值共同决定了一种属性,该属性中包含了多个值
4NF
如果一个关系模式是4NF,则必为BCNF
闭包求码
闭包是由一个属性直接或间接推导出的所有属性的集合
(白嫖一下超哥的例题 手动一下 @梁默申)
解题步骤参考于
https://blog.csdn.net/Chantec/article/details/116245160?spm=1001.2014.3001.5501
首先写出划分属性
L:属性只出现在函数依赖左部
R:属性只出现在函数依赖右部
LR:属性出现在函数依赖左部和右部
N:属性未出现在函数依赖中
定理1:对于给定的关系模式R及其函数依赖集F,若X(X∈R)是L类属性,则X必为R的任一候选码的成员。
推论1:
对于给定的关系模式R及其函数依赖集F,
若X(X∈R)是L类属性,且X+包含了R的全部属性;
则X必为R的唯一候选码。
定理2:对于给定的关系模式R及其函数依赖集F,
若X(X∈R)是R类属性,则X不在任何候选码中。
定理3:对于给定的关系模式R及其函数依赖集F,
若X(X∈R)是N类属性,则X必包含在R的任一候选码中。
推论2:对于给定的关系模式R及其函数依赖集F,
若X(X∈R)是L类和N类组成的属性集,且X+包含了R的全部属性;则X是R的唯一候选码。