数据库关系模式的范式总结

您所在的位置:网站首页 概念范式 数据库关系模式的范式总结

数据库关系模式的范式总结

2024-07-12 06:34| 来源: 网络整理| 查看: 265

目录

什么是关系模式的范式 第一范式(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