# 三个范式

# 第一范式1NF

字段是最小的单元不可再分

例如,学生信息组成了学生信息表,由年龄、性别、学号、名字等组成。这些字段都是不可再分的,所以就是满足第一范式的。

第一范式就是无重复的列

# 第二范式2NF

第二范式首先是满足第一范式的,然后表中的字段必须完全依赖于全部的主键而非部分的主键。

即其它字段组成的记录和这个主键表示的都是同一个东西,而主键是唯一的,它们这些字段都只需要依赖于这个主键。

比如,一个学号为1的学生,他年龄23,女,姓名X。在这行记录中,学号就是这个学生的主键,年龄、性别、姓名等其它字段都是依赖于学号这个主键的。

第二范式就是非主属性都全部依赖于主关键字

# 第三范式3NF

第三范式是满足第二范式的,非主键外的所有字段必须互不依赖。

即数据只会在一个存储,不会重复地出现在多张表中,这样就消除了传递依赖。

比如,大学里有很多不同的学院(计算机学院、软件学院、商学院等)。那个学院信息列表可以由以下字段组成:学院编号,院长,学院名称,学院介绍等。在这个记录中,学院编号就是学院这张表的主键。那么学生信息表中,就不能再添加学院编号,院长,学院简介等属性,否则就重复。就会发生非主键外的字段形成了依赖关系,也就是学院表中的一些非主键的属性和学生表有依赖关系了。这是不行的,正确的做法是:学生表中只能增加一个学院表的主键,即学院编号字段。

属性是不依赖于其他非主属性的