数据库
首页 > 数据库> > 关系数据库范式及1NF、2NF、3NF和BCNF

关系数据库范式及1NF、2NF、3NF和BCNF

作者:互联网

关系规范化技术涉及一系列规则,实施这些规则,可以确保关系数据库被规范到相应程度。规范化范式(Normal Forma,NF)是关系表符合特定规范化程度的模式。规范化范式的种类与函数依赖有着直接的联系。

关系规范化技术涉及一系列规则,实施这些规则,可以确保关系数据库被规范到相应程度。规范化范式(Normal Forma,NF)是关系表符合特定规范化程度的模式。规范化范式的种类与函数依赖有着直接的联系。在关系中存在函数依赖时就有可能存在数据冗余,引出数据操作异常现象。数据冗余不仅浪费存储空间,而且会使数据库难以保持数据的一致性。实施某种范式的规范化处理,可以确保关系数据库中没有各种类型的数据操作异常和数据不一致性。

目前,关系数据库的规范化有6种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF)。满足最低规则要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规则要求的称为第二范式(2NF),其余范式依次类推。高级范式包含低级范式的全部规则要求。

第一范式
*在关系数据库中,第一范式(1NF)是对关系表的基本要求,不满足第一范式的二维表不是关系。*第一范式指关系表的属性列不能重复,并且每个属性列都是不可分割的基本数据项

若一个关系表存在重复列或可细分属性列,则该关系表不满足规范化的1NF范式,该表存在冗余数据,对该表进行数据操作访问也必然会出现异常。解决非规范化关系的基本方法就是对关系进行分解处理,直到分解后的每个关系都满足规范化为止。
在这里插入图片描述
第二范式

如果关系满足第一范式,并消除了关系中的属性部分函数依赖,该关系满足第二范式。第二范式规则要求关系表中所有数据都要和该关系表的主键完全函数依赖

如果一个关系中某些属性数据只和主键的一部分存在依赖关系,该关系就不符合第二范式。例如,关系(A,B,N,O,P)的复合主键为(A,B),那么N、O、P这3个非键属性都不存在只依赖A或只依赖B的情况,则该关系满足第二范式。反之,该关系不满足第二范式。为了使关系满足第二范式,必须为那些部分依赖表主键的属性创建单独的关系表。

为了将图4-43(b)所示的“学生”关系规范化为满足2NF范式,其处理办法就是消除该关系中的部分函数依赖,将部分函数依赖的属性从原关系中移出,并放入一个新关系中,同时将这些属性的决定因子作为主键放到新关系中。将原“学生”关系分解为“学生”“课程成绩”关系,每个关系均满足2NF范式,如图4-44所示。

在这里插入图片描述
第三范式

满足2NF范式的关系表在进行数据访问操作时,依然可能存在数据操作异常问题。例如,对图4-44中“学生”关系中某学生的“住址”进行更新,而其他同系学生的住址没有修改,则会出现数据不一致问题。此时的数据更新异常是因为“学生”关系表中存在属性传递函数依赖,该表不满足3NF范式导致的。

第三范式(3NF)要求关系先满足2NF范式,并且所有非主键属性均不存在传递函数依赖。例如,关系(A,N,O,P)的主键为 A,那么非键属性 N、O或 P都不能由单个的 N、O、P或它们的组合所决定。该关系满足3NF范式。

【例4-24】图4-44所示的“学生”关系虽然满足2NF范式,但存在如下属性传递依赖。

学号→系名,系名→住址,故学号→住址

因此,该“学生”关系不满足3NF 范式。若要使“学生”关系达到3NF 范式,则需要对该关系进行拆分处理,并使每个关系均不存在属性传递函数依赖。现将原“学生”关系拆分为“学生”“系信息”新关系。由于“课程成绩”关系本身不存在传递函数依赖,它不需进行分解处理。图4-45所示的关系表均满足3NF范式。

在这里插入图片描述
【摘于 数据库系统:原理、设计与编程】

标签:3NF,BCNF,依赖,范式,关系,满足,关系数据库,规范化,属性
来源: https://blog.csdn.net/T_110140/article/details/122142905