数据库理论(一)第一、二、三范式介绍及区别
一、什么是范式?
范式来自英文Normal Form,简称NF。
实际上你可以把它粗略地理解为 一张数据表的表结构所符合的某种设计标准的级别 。就像家里装修买建材,最环保的是E0级,其次是E1级,还有E2级等等。
目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式5NF,又称完美范式)。
满足最低要求的范式是第一范式(1NF),在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般来说,数据库只需满足第三范式(3NF)就行了。
二、第一范式(1NF)(原子性)
第一范式(1NF)定义:在关系模式R中的每一个具体关系r中,如果每个属性值 都是不可再分的最小数据单位,则称R是第一范式的关系。例:如职工号,姓名,电话号码组成一个表(一个人可能有一个办公室电话 和一个家里电话号码)
规范成为1NF有三种方法:
一是重复存储职工号和姓名。这样,关键字只能是电话号码。
二是职工号为关键字,电话号码分为单位电话和住宅电话两个属性
三是职工号为关键字,但强制每条记录只能有一个电话号码。
以上三个方法,第一种方法最不可取,按实际情况选取后两种情况。
举例:电话号码还可以拆分成家庭电话和办公室电话,这种情况电话并不是原子性字段,则不符合第一范式。
第一范式详细的要求如下:
1、每一列属性都是不可再分的属性值,确保每一列的原子性;
2、两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据;
3、单一属性的列为基本数据类型构成;
4、设计出来的表都是简单的二维表。
第二范式(2NF):如果关系模式R(U,F)中的所有非主属性都完全依赖于任意一个候选关键字,则称关系R 是属于第二范式的。 (唯一性)
第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。
第二范式(2NF)要求实体的属性完全依赖于主关键字。
第三范式(3NF):如果关系模式R(U,F)中的所有非主属性对任何候选关键字都不存在传递信赖,则称关系R是属于第三范式的。(不可传递性)
第三范式规定,所有非主属性对任何候选关键字都不存在传递信赖。部门名称和部门职能不可传递。
四、第一、二、三范式之间的区别
数据库范式(Normalization)是一种设计数据库的方法,目的是消除重复数据,减少数据存储空间,提高数据的一致性和可靠性。常见的数据库范式包括第一范式(1NF)、第二范式(2NF)和第三范式(3NF),它们之间的区别如下:
-
第一范式(1NF): 第一范式要求表中的每一列都是不可分的基本数据项,也就是每个属性都是原子性的,不可再分解。这意味着在一个表中不允许出现重复的列或者多个值存在于同一列中。
-
第二范式(2NF): 第二范式要求一个表必须满足第一范式,并且所有非主键属性都完全依赖于主键,也就是说,表中每一条数据都可以通过唯一的主键来标识,并且每个非主键属性都必须完全依赖于主键而不是依赖于主键的一部分。
-
第三范式(3NF): 第三范式要求一个表必须满足第二范式,并且不存在非主键属性对主键的传递依赖关系,也就是说,每个非主键属性必须直接依赖于主键而不是依赖于其他非主键属性。如果存在这种传递依赖,就需要将它们分解成独立的表来消除这种依赖关系。
简单来说,第一范式消除重复数据,第二范式消除部分依赖,第三范式消除传递依赖。三范式之后还有BCNF、4NF、5NF等更高级别的范式,但是往往也更加复杂。在实际设计中,要根据具体业务场景和数据结构的特点来选择合适的范式。