数据库关系模式的范式总结 |
您所在的位置:网站首页 › 概念范式 › 数据库关系模式的范式总结 |
目录 什么是关系模式的范式 第一范式(1NF)第二范式(2NF)第三范式(3NF) BC范式(BCNF)第四范式(4NF)第五范式(5NF) 什么是关系模式的范式关系模式的范式是衡量关系模式好坏的标准。范式的种类与数据依赖有着直接联系,满足不同程度要求的关系称为不同的范式等级。其中,满足最低要求的关系称为第一范式,简称1NF,以此类推,还有第二范式(2NF)、第三范式(3NF)、BC范式(BCNF)、第四范式(4NF)和第五范式(SNF)等多种。不同的范式表示关系模式遵守的不同规则。 各种范式之间是一种包含关系: 1NF⊃2NF⊃3NF⊃BCNF⊃4NF⊃5NF1 1.第一范式(1NF)定义:若关系模式R的每个关系r的属性值都是不可分的原子值,则称R是第一范式1NF (First Normal Form)的模式。 如,关系模式R存放的是学生信息: 姓名性别出生日期年月日张三男1999410............... 虽然看上去将出生日期分成年月日更准确,但这种情况下出生日期不再是基本属性而是由年、月、日三个分属性组成的复合属性,因此 该模式不满足1NF的范式要求。应改成: 姓名性别出生日期张三男1999/04/10……… 2.第二范式(2NF)定义:1.对于FD W→A,若存在X⊆W有X→A成立,则称W→A是局部依赖(A局部依赖于W);否则称W→A是完全依赖。完全依赖也称为“左部不可约依赖”。 2.若A是关系模式R中候选键属性,则称A是R的主属性:否则称A是R的非主属性。 3.若关系模式R是1NF,且每个非主属性完全函数依赖于候选键,则称R是第二范式(2NF)的模式。若数据库模式中每个关系模式都是2NF,则称数据库模式为2NF的数据库模式。 简单来说在满足第一范式的情况下,候选键与其他键都是完全依赖函数,那么此关系模式就是第二范式。举个例子:关系模式如图所示,sno为学号,cno为课程号 snocnograde95001192950041589500229095003285该关系模式中存在函数依赖:sno→grade,但该关系模式的主键是sno、cno,因此有(sno,cno)→grade,即存在非主属性对主键的部分依赖关系,所以此关系模式不满足第二范式要求。 应改成: snocno950011950041950022950032 snograde9500192950045895002909500385即通过模式分解,使任一非主属性都完全函数依赖与它的任一候选键,也就是消除非主属性对键的部分函数依赖。 3.第三范式(3NF)定义:1.若x→Y, Y→A, 且Y-/->x和A⫋Y,则称X→A是传递依赖(A传递依赖于X)。 2. 若关系模式R是1NF,且每个非主属性都不传递依赖于R的候选键,则称 R是第三范式(3NF)的模式。若数据库模式中的每个关系模式都是3NF,则称其为3NF的数据库模式。 3NF的目的是消除非主属性对键的传递函数依赖。 举个例子: 关系模式如图所示,Mname为系主任,sno为主属性 snosnamessexsagesdeptMname95001李勇男20CS张三95002刘晨女19IS李四95003王敏女18MA王五95004张立男19IS李四95005刘云女18CS张三可知 sno→sname,sno→ssex,sno→sage,sno→sdept,sdept→Mname 因为sno→sdept,sdept→Mname 所以sno与Mname是传递依赖,因此该关系模式不满足第三范式要求 应改为: snosnamessexsagesdept95001李勇男20CS95002刘晨女19IS95003王敏女18MA95004张立男19IS95005刘云女18CS sdeptMnameCS张三IS李四MA王五 4.BC范式(BCNF)定义: 若关系模式R是1NF,且每个属性都不部分依赖也不传递依赖于R的候选键,则称R是 BCNF的模式。若数据库模式中的每个关系模式都是BCNF,则称为BCNF的数据库模式。 举个例子: 关系模式如图所示:其中候选键(sno,cno),(sname,cno) ,假设不重名 snosnamecnograde95001李勇12095001李勇23095002刘晨21995003王敏11895004张立21995005刘云118该关系模式存在依赖:sno→sname,sname→sno,(sno,cno)→grade,(sname,cno)→grade应该为: snosname95001李勇95002刘晨95003王敏95004张立95005刘云 snocnograde9500112095002219950031189500421995005118 5.第四范式定义:设关系R(X,Y,Z),其中X,Y,Z是成对的、不相交属性的集合。若存在非平凡多值依赖,则意味着对R中的每个属性 Ai(i=1,2,…,n)存在有函数依赖 X→Ai(X必包含键)。那么 称R是第四范式的模式 。 也就是说,当一个表中的非主属性互相独立时(3NF),这些非主属性不应该有多值。若有多值就违反了第四范式。 举个例子: 当我们统计一个人电话号码时,他可能有多个手机号码或固定电话。name为主键 这时关系模式为: namecellphonetelephone李勇131xxxxxxxx0551-xxxxxxxx李勇139xxxxxxxx0539-xxxxxxxx这样在日后维护中可能产生不必要的麻烦,比如当用户弃用第一行的手机号码和第二行的固定电话号码时,两行会合并吗?此时违反了第四范式要求应改为: nametypephone李勇telephone0551-xxxxxxxx李勇cellphone139xxxxxxxx……… 6.第五范式定义:如果关系模式R中的每一个连接依赖均由R的候选码所隐含2,则称此关系模式符合第五范式。 例如:有一个销售信息表。 namecompanyitem李勇xxxxxxxx………此时违反了每一个连接依赖均由R的候选码所隐含的要求。 应改为: namecompany李勇xxxxx…… companyitemxxxxxxxx…. nameitem李勇xxx…… 总结:规范化的过程就是在数据库表设计时移除数据冗余的过程。随着规范化的进行,数据冗余越来越少,但数据库的效率也越来越低. 这就要求在数据库设计中,能结合实际应用的性能要求,规范到合适的范式。 规范化的过程可概括如下: (1)取原始的1NF关系投影,消去非主属性对键的部分函数依赖,从而产生一组2NF关系。 (2)取2NF关系的投影,消去非主属性对键的传递函数依赖,产生一组3NF关系。 (3)取这些3NF的投影,消去决定因素不是键的函数依赖。产生一组BCNF关系。 (4)取这些BCNF关系的投影,消去其中不是函数依赖的非平多值依赖,产生一组4NF关系。 (5)取4NF关系的投影,消除不是由候选码所蕴含的连接依赖,产生一组5NF关系。 即:第三范式一定是第二范式也一定是第一范式······· ↩︎ 指在连接时,所连接的属性均为候选码 ↩︎ |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |