范式
什么是范式:就是对关系型数据库做出的规范要求,满足不同程度的规范要求就是不同的范式。
最常见的设计范式有三个:
第一范式(1NF)
在关系模型中,一范式的所有域都应该是原子性的,即每个属性都不能再分。
错误做法如下:
对于”学生“一列有多项信息都合并在一起了,不具有原子性,也不属于第一范式。
修改后:
第二范式(2NF)
在一范式的基础上,每个非主属性完全函数依赖于任何一个候选码,即在一范式基础上消除非主属性对主码的部分依赖。
部分函数依赖:在关系模式R(U)中,如果X→Y,并且存在X的一个真子集X0,使得X0→Y,则称Y对X部分函数依赖。
完全函数依赖:在关系模式R(U)中,如果X→Y,并且存在X的一个真子集X0,使得X0不能决定Y,则称Y对X完全函数依赖。
这里举例说明:
设有关系模式U(A,B,C,D,E),存在函数依赖关系:F={ A→C, BC→D, CD→A, AB→E}。
可以判断出非主属性为D、E,候选码为AB、BC;
在题目中非主属性D存在BC→D,属于完全函数依赖;而E存在AB→E,也属于完全函数依赖;所以题目中的函数依赖关系满足二范式。
那什么时候不满足二范式呢? 如题目中增添函数关系A→E,就出现了E对A的部分函数依赖,不符合二范式。
第三范式(3NF)
在第二范式的基础上,每个非主属性既不传递依赖于码,也不部分依赖于码。如果关系模式R属于3NF,则必有R属于2NF。
传递函数依赖:在关系模式R(U)中,如果X→Y,Y→Z,且 X 不包含 Y,Y 不确定 X,Y不包含Z,则称 Z 对X传递函数依赖。
举例说明:
如果有 A→C, C→D成立, 则A→D称D传递依赖与A。
也就是说第三范式确保表中的每一列数据表和主键直接相关,而不是间接相关。
标签:关系,依赖,范式,函数,数据库,X0,三大,属性 From: https://www.cnblogs.com/nliu/p/17169034.html