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

目录

  1. 什么是关系模式的范式
  2. 第一范式(1NF)
  3. 第二范式(2NF)
  4. 第三范式(3NF)
  5. BC范式(BCNF)
  6. 第四范式(4NF)
  7. 第五范式(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为课程号

snocnograde
95001192
95004158
95002290
95003285

该关系模式中存在函数依赖:sno→grade,但该关系模式的主键是sno、cno,因此有(sno,cno)→grade,即存在非主属性对主键的部分依赖关系,所以此关系模式不满足第二范式要求

应改成:

snocno
950011
950041
950022
950032
snograde
9500192
9500458
9500290
9500385

即通过模式分解,使任一非主属性都完全函数依赖与它的任一候选键,也就是消除非主属性对键的部分函数依赖。


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为主属性

snosnamessexsagesdeptMname
95001李勇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是传递依赖,因此该关系模式不满足第三范式要求


应改为:
snosnamessexsagesdept
95001李勇20CS
95002刘晨19IS
95003王敏18MA
95004张立19IS
95005刘云18CS
sdeptMname
CS张三
IS李四
MA王五

4.BC范式(BCNF)

定义: 若关系模式R是1NF,且每个属性都不部分依赖也不传递依赖于R的候选键,则称R是 BCNF的模式。若数据库模式中的每个关系模式都是BCNF,则称为BCNF的数据库模式。

举个例子:
关系模式如图所示:其中候选键(sno,cno),(sname,cno) ,假设不重名

snosnamecnograde
95001李勇120
95001李勇230
95002刘晨219
95003王敏118
95004张立219
95005刘云118
该关系模式存在依赖:sno→sname,sname→sno,(sno,cno)→grade,(sname,cno)→grade

应该为:

snosname
95001李勇
95002刘晨
95003王敏
95004张立
95005刘云
snocnograde
95001120
95002219
95003118
95004219
95005118

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
companyitem
xxxxxxxx
.
nameitem
李勇xxx

总结:

        规范化的过程就是在数据库表设计时移除数据冗余的过程。随着规范化的进行,数据冗余越来越少,但数据库的效率也越来越低. 这就要求在数据库设计中,能结合实际应用的性能要求,规范到合适的范式。

        规范化的过程可概括如下:
(1)取原始的1NF关系投影,消去非主属性对键的部分函数依赖,从而产生一组2NF关系。
(2)取2NF关系的投影,消去非主属性对键的传递函数依赖,产生一组3NF关系。
(3)取这些3NF的投影,消去决定因素不是键的函数依赖。产生一组BCNF关系。
(4)取这些BCNF关系的投影,消去其中不是函数依赖的非平多值依赖,产生一组4NF关系。
(5)取4NF关系的投影,消除不是由候选码所蕴含的连接依赖,产生一组5NF关系。


  1. 即:第三范式一定是第二范式也一定是第一范式······· ↩︎

  2. 指在连接时,所连接的属性均为候选码 ↩︎

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值