本文主要是介绍MySQL丨理论丨(五)理论范式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
同步发布:Hedon丨MySQL丨理论丨(五)理论范式 (排版更佳!)
1. 函数依赖
1.1 函数依赖的概念
[1] 决定关系
其实就是 Y = f(X),X决定Y,Y依赖于X。
[2] 非平凡的函数依赖
X -> Y,但是 Y ⊊ X
[3] 平凡的函数依赖
X -> Y,但是 Y ⊆ X
[4] 完全函数依赖(X-F>Y)
R(U)是属性集U上的关系模式,X,Y,Z是U的不同子集,非空且不互相包含。
X -> Y,且任意 X 的真子集 X`,都有 X` ⧷> Y ,也就是 X 中没有滥竽充数的,每个都得要。
[5] 部分函数依赖(X-P>Y)
就是不完全函数依赖。
[6] 传递依赖(X-t>Z)
若有 X->Y( Y ⊊ X),Y⧷>X,Y->Z,则必有 X->Z,则称 Z 传递依赖于 X。
△[例题]
- 左部位单属性的函数依赖一定是完全函数依赖。
- sno -> sname
- sno -> class
- tno -> tname
- 左部有多个,那就看起真子集能否决定右部属性。
- (sno,cno) -> grade:
- sno ⧷> grade
- cno ⧷> grade
- 完全函数依赖
- (sno,cno) -> sname:
- sno -> sname
- cno ⧷> sname
- 部分函数依赖
- cno -> tname
- cno -> tno, tno⧷> cno
- tno -> tname
- 传递函数依赖
1.2 候选键
[1] 定义
唯一标识实体,且不包含多余属性的属性集。
[2] 相关概念
-
主键
-
主属性
包含在任何一个候选键中的属性。
-
非主属性
不包含在任何一个候选键中的属性。
2. 关系模型的规范化
第 1 范式(1NF)
[1] 特点
[2] 问题
第 2 范式(2NF)
[1] 特点
任意一个非主属性都完全依赖于R的任一候选键。
![image-20200401195815547](/upload/202108/03/202108030207186626.png)
[2] 问题
-
减少了数据冗余
-
插入异常
-
删除异常
-
修改异常
一个地方修改,可能需要修改很多个表。
第 3 范式(3NF)
[1] 特点
消除了非主属性对候选码的传递函数依赖。
[2] 问题
- 减少了数据冗余
- 减少了前面的删除异常
- 减少了前面的插入异常
- 减少了前面的修改异常
- 不彻底性。
BC 范式(BCNF)
[1] 特点
第 4 范式(4NF)
多值依赖(一对多)
[1] 特点
如果存在元组(x,y1,z1)和(x,y2,z2),一定存在元组(x,y2,z1)和元组(x,y1,z2)。
U=X+Y+Z,X →→ Y 表示 X 多值决定 Y
- X的一个值可以确定Y的多个值(这个关系决定于Z的取值无关,也就是说当X值确定后,无论Z取何值,得到的Y总是固定的。
- 对称性:
- 合并性:
- 若 X →→ Y,且 X →→ Z,则 X →→ YZ
- 相交性:
- 若 X →→ Y,且 X →→ Z,则 X →→ (Y∩Z)
- 传递性:
- 若X →→ Y,且 Y →→ Z,则 X →→ (Y-Z),X →→(Z-Y)
第 4 范式(4NF)
[1] 特点
设 R(U)是一个关系模式,D是R上的多值依赖集合。如果D中每个非平凡多值依赖X→→Y,X都包含R的候选键,则R∈4NF。
这篇关于MySQL丨理论丨(五)理论范式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!