从1NF到BCNF
作者:互联网
故作高深把简单的内容讲的谁都看不懂是愚蠢的。。。
NF是范式(normal form 正常形式)的缩写,这个是描述关系模式的。
学校就是一个关系模式,这个关系模式里有学号,姓名,性别。NF之一就是学校。
1NF就是关系模式里的值不能再细分下去了,学号,姓名,性别这种就不能再细分下去了,学生就是可以细分出来的东西,老师也是可以细分出来的东西,如果学校分成学生和老师,再分成学号,姓名之类的就不是1NF。
2NF是说根据学号能找到其他所有的不能直接找到学生这个人的值,这样就满足了2NF。例如根据身份证号不能找到学号,根据学号也不能找到身份证号,但是根据这两个东西都能找到这个人,学号和身份证号就叫码,这两个合在一起叫候选码,候选码中的任何一个叫主码,如果一个表,一个关系模式只包含主码这种现象就叫全码,码≈主码≈全码。然后,根据身份证不能找到学院,不能找到系,所以假如删掉学号这个属性,就变成身份证,姓名,性别,学院,系,这时候就不能叫2NF了。
3NF就是根据一个候选码不能找到另一个候选码,每个候选码都能找到所有非候选码,身份证和学院,系的组合体找不到学号,学号找得到身份证,学院,系的组合体就是非3NF,如果把身份证删了,只剩下学号,姓名,性别,学院,系就符合3NF了,同时也符合BCNF。
BCNF是Boyce和Codd提出的范式,假如身份证找得到学号,学号找不到身份证,就是BCNF了。
接下来是官方说法:
1NF是满足最低要求的叫第一范式。
2NF是R(关系模式)∈1NF,每一个非主属性完全函数依赖于任何一个候选码(某个主码能找到其它所有不能直接找到这个人的属性)。
3NF是R<U,F>∈1NF,若R中不存在这样的码X,属性组Y及非主属性Z(Z不含于Y)使得X->Y(Y函数依赖于X,也就是根据X能找到Y),Y->Z成立,X不函数依赖于Y(Y找不到X),则称R<U,F>∈3NF。
BCNF是R<U,F>∈1NF,若X->Y且Y不含于X时X必有码(X可以是属性组),则R<U,F>∈BCNF。
数据库学关系模式,但我觉得就这种东西完全没有实用性,反正我也瞧不起这种东西,写一份吐槽一下。
标签:3NF,BCNF,学号,找到,候选,1NF 来源: https://www.cnblogs.com/threecountrywar/p/16391904.html