3NF 与BCNF 有什么区别? 求举个例子说明下~谢谢
所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。
在第一范式(1NF)中表的每一行只包含一个实例的信息。简而言之,第一范式就是无重复的列。
说明:在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。
区别:
1、类别不同
3NF:第三范式
BCNF:巴斯-科德范式
2、内容不同
第三范式(3NF):满足 2NF,任何非主属性不依赖于其他非主属性(消除 2NF 主属性对码的传递函数依赖)
鲍依斯-科得范式(BCNF):满足 3NF,任何非主属性不能对主键子集依赖(消除 3NF 主属性对码的部分和传递函数依赖)
3、包含条件不同
巴斯-科德范式(BCNF)是第三范式(3NF)的一个子集,即满足巴斯-科德范式(BCNF)必须满足第三范式(3NF)。
扩展资料:
数据库其余范式:
1、第一范式(1NF)
必须有主键,列不可分;数据库表中的任何字段都是单一属性的,不可再分。
2、第二范式(2NF)
数据库表中非关键字段对任一候选关键字段的,都不存在部分函数依赖。当一个表是复合主键时,非主键的字段不依赖于部分主键(即必须依赖于全部的主键字段。
数据库范式目的原则:
规范化目的是使结构更合理,消除存储异常,使数据冗余尽量小,便于插入、删除和更新。
遵从概念单一化“一事一地”原则,即一个关系模式描述一个实体或实体间的一种联系。规范的实质就是概念的单一化。
最小冗余的要求必须以分解后的数据库能够表达原来数据库所有信息为前提来实现。其根本目标是节省存储空问,避免数据不一致性,提高对关系的操作效率,同时满足应用需求。
实际上,并不一定要求全部模式都达到BCNF不可,有时故意保留部分冗余可能更方便数据查询,尤其对于那些更新频度不高,查询频度极高的数据库系统更是如此。
参考资料来源:百度百科-数据库范式
范式是数据库中的关于关系模式的分类,是越来越严苛的分类。
一、区别
1、第三范式指表中的所有数据元素不但要能唯一地被主关键字所标识,而且它们之间还必须相互独立,不存在其他的函数关系。第三范式就是在第二范式的基础上再消除表中有可能存在某些数据元素依赖于其他非关键字数据元素的现象。
2、BC范式是指对于关系模式R,若 R为第一范式,且每个属性都不部分依赖于候选键也不传递依赖于候选键。BC比第三范式更严苛的条件是:要求R为第二范式且非键属性不传递依赖于R的候选键,而BC范式则是对R的每个属性都做要求。即决定因素为候选码。
二、举例
以下关系模式满足第三范式
学生:(学号, 姓名, 年龄, 所在学院);
学院:(学院, 地点, 电话)。
其中的关系函数为:学号->姓名、学号->年龄、学号->学院、学院->地点、学院->电话。可以看出所有的关系函数均为一候选码为决定因素(函数的前半部分)那么可以说此关系模式满足BCNF。
扩展资料
数据库范式概念引入原因
规范化目的是使结构更合理,消除存储异常,使数据冗余尽量小。便于插入、删除和更新。
遵从概念单一化“一事一地”原则,即一个关系模式描述一个实体或实体间的一种联系。规范的实质就是概念的单一化。
一个关系模式接着分解可以得到不同关系模式集合,也就是说分解方法不是惟一的。最小冗余的要求必须以分解后的数据库能够表达原来数据库所有信息为前提来实现。其根本目标是节省存储空问,避免数据不一致性,提高对关系的操作效率,同时满足应用需求。
实际上,并不一定要求全部模式都达到BCNF不可。有时故意保留部分冗余可能更方便数据查询。尤其对于那些更新频度不高,查询频度极高的数据库系统更是如此。
参考资料来源:百度百科-数据库范式
一、含义不同
1、3NF:即第三范式是要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。
例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。
2、BCNF:中文叫巴斯范式,是由Boyce和Codd提出的,比3NF又进了一步,通常认为是修正的第三范式。
例如:设关系模式R<U,F>∈1NF,如果对于R的每个函数依赖X→Y,若Y不属于X,则X必含有超码,那么R∈BCNF。
满足BCNF条件有:所有非主属性对每一个候选键都是完全函数依赖; 所有的主属性对每一个不包含它的候选键,也是完全函数依赖;没有任何属性完全函数依赖于非候选键的任何一组属性。
二、级别不同
1、3NF:满足3NF范式需要先满足第一范式跟第二范式。
2、BCNF:满足BCNF范式需要先满足3NF范式。
三、应用场景不同
1、3NF:用于数据库设计初级阶段。
2、BCNF:用于数据库设计的详细阶段。用来效验数据库设计是否合理。
参考资料链接:百度百科-BCNF
参考资料链接:百度百科-3NF
参考资料链接:百度百科-数据库范式
BC范式的函数依赖左部一定包含码。而3范式没有这个要求。
例子:
关系模式(学生,老师,课程) 其中每一个老师只教一门课,每门课有若干老师,某一学生选一门课就对应一个老师。 由语义得如下函数依赖:
(学生,课程)→老师。
(学生,老师)→课程。
老师→课程。
码是:学生,老师;学生,课程
主属性是:学生,老师,课程
显然,没有非主属性的传递依赖,也没有非主属性部分函数依赖,所以为三范式。
但是!! 老师→课程 这个函数依赖左部不包含码 只有码的一部分 所以达不到BC范式
章甄奇莫:[答案] 目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第五范式(5NF)和第六范式(6NF).满足最低要求的范式是第一范式(1NF),在第一范式的基础上进一步满足更多要求...
芦溪县18192606678: BCNF和3NF的跟本区别在哪儿? - ?
章甄奇莫: BCNF:如果关系模式R(U,F)的所有属性(包括主属性和非主属性)都不传递依赖于R的任何候选关键字,那么称关系R是属于BCNF的.或是关系模式R,如果每个决定因素都包含关键字(而不是被关键字所包含),则BCNF的关系模式. 例:配件...
芦溪县18192606678: 第三范式与BC范式有什么区别? - ?
章甄奇莫: 满足3NF的关系模式,每个非主属性既不部分依赖于码也不传递依赖于码. 满足BCNF的关系模式,每个决定因素都含有码. 如果一个关系模式满足BCNF,则一定满足3NF. 二者的区别在于,BCNF消除了可能存在的主属性对主码的部分依赖和传递依赖. 这个问题有点拗口,主要是要弄明白属性,主属性,主码,决定因素的概念. 如果看不大明白的话,可以给我发消息,咱们继续交流学习.
芦溪县18192606678: 在SQL里,什么是BCNF,什么是3NF.?
章甄奇莫: 要给出表间各属性的依赖关系才可以知道是否符合范式.范式是个递推的约束关系:1NF:属性的原子性2NF:第二范式(2NF)要求实体的属性完全依赖于主关键字3NF:即当2NF消除了非主属性对码的传递函数依赖,则称为3NFBCNF:对3NF关系进行投影,将消除原关系中主属性对码的部分与传递依赖,得到一组BCNF关系
芦溪县18192606678: 3NF 与BCNF 的具体关系是什么 - ?
章甄奇莫: 简单的说,如果由3NF转化为BCNF,则消除了主属性对码的部分和传递函数依赖.3NF和BCNF是在函数依赖的条件下对模式分解所能达到的分离程度的测度.一个模式中的关系模式如果都属于BCNF,...
芦溪县18192606678: 数据库原理3NF和CBNF范式 - ?
章甄奇莫: 是BCNF(BC范式吧) 第三范式(3NF)属性,在1NF基础上,任何非主属性不依赖于其它非主属性[在2NF基础上消除传递依赖] 第三范式(3NF)是第二范式(2NF)的一个子集,即满足第三范式(3NF)必须满足第二范式(2NF).简而言之,...
芦溪县18192606678: 所有的3NF都是BCNF吗? - ?
章甄奇莫: 当然不是,BCNF比3NF更严格,在满足3NF的基础上还要增加约束条件:每个决定因素都要包含码!
芦溪县18192606678: 跪求解答:数据库设计中的范式1NF,2NF,3NF,BCNF怎么区分? - ?
章甄奇莫: 1NF不能表里面再有表,2NF不存在非主属性对码的部分依赖,3NF不存在非主属性对码的传递依赖.
芦溪县18192606678: 怎么区分第1234还有bcnf范式?可以用具体的例子讲解下么~~? ?
章甄奇莫: 1 第一范式(1NF) 在任何一个关系数据库中,第一范式(1NF)是对关系模式的基... 3 第三范式(3NF) 满足第三范式(3NF)必须先满足第二范式(2NF).简而言之...
芦溪县18192606678: 请问数据库设计中BCNF范式是什么意思? ?
章甄奇莫: 巴斯-科德范式(BCNF)是第三范式(3NF)的一个子集,即满足巴斯-科德范式(BCNF)必须满足第三范式(3NF).通常情况下,巴斯-科德范式被认为没有新的设计规范加入,只是对第二范式与第三范式中设计规范要求更强,因而被认为是修正第三范式. 也就是说,它事实上是对第三范式的修正,使数据库冗余度更小.这也是BCNF不被称为第四范式的原因.某些书上,根据范式要求的递增性将其称之为第四范式是不规范,也是更让人不容易理解的地方.而真正的第四范式,则是在设计规范中添加了对多值及依赖的要求.