数据库第一范式、第二范式、第三范式及BC范式,到底是咋回事?

惭愧,惭愧,不知道以前学的时候搞明白没。俩数据库助教唠半天总算是搞明白了。

第一范式

【定义】

如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF。简单的说,就是每一个列(属性),不能再分割成多个列(属性)。

【理解】

一范式较好理解,不过多阐述。就是简单地说,属性不能再拆分,比如不能把学生ID和姓名存成一个属性。

 

第二范式

【定义】

在1NF的基础上,非主属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖)。

【部分函数依赖】

那么,什么又是部分函数依赖呢?来看看完全函数依赖的定义。

【完全函数依赖】

如果非主属性B函数依赖于构成某个候选关键字的一组主属性A,而且A的任何一个真子集不能被B函数依赖,则称B完全函数依赖于A;反之,若B函数能依赖于A的真子集,则称B部分函数依赖于A。

【非主属性】

那么什么是非主属性呢? 这个非常重要哦,是后续BC范式中的一个关键。来看下主属性的定义。

【主属性】

在一个关系中,如一个属性是构成某一个候选关键字的属性集中的一个属性,则称它为主属性。

也就是说,主要一个属性是候选键,无论选不选他作为主键,他都依然是主属性。

【理解】

总结一下,2范式就是在1范式的基础上再保障非主属性完全依赖于主属性。

 

第三范式

【定义】

在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)。

【理解】

三范式就比较好理解,就是除去函数依赖,比如A→B,B→C,那么ABC就不能放在一个关系中,而是要拆分成AB,BC。

 

BC范式

【定义】

【一范式基础】

对于关系模式R,若 R为第一范式,且每个属性都部分依赖于候选键也传递依赖于候选键,那么称R是BC范式  。

【三范式基础】

相对于第三范式,BC范式的要求更加严格。第三范式只是要求R为第二范式且非键属性不传递依赖于R的候选键,而BC范式则是对R的每个属性都做要求。

【理解】

用大白话来说,在三范式的基础上,BC范式就是要每个属性都不函数依赖于主属性。这就涉及到刚才的定义了。什么叫主属性,也就是能作为候选键的属性,都能被称为主属性。也就是说,一张表里,主属性也不能依赖于主属性,才能被称为BC范式。BC范式既检查非主属性,又检查主属性。当只检查非主属性时,就成了第三范式。满足BC范式的关系都必然满足第三范式。

 

你可能感兴趣的:(数据库)