第二范式(2NF),主要关注消除非主属性对候选关键字的部分函数依赖。
在数据库设计中,表中的列可以分为两种类型:主属性和非主属性。主属性是直接定义在关系的候选关键字上的属性,而非主属性则不是直接定义在关键字上的属性。
第二范式有两个重要的要点:
表必须符合第一范式,即每个属性都是原子的,不可再分。
非主属性必须完全依赖于关系的候选关键字。
简言之,第二范式要求在关系中,每个非主属性都必须完全依赖于关键字,而不能依赖于关键字的一部分。这就意味着如果一个表的候选关键字由多个属性组成,那么非主属性必须与所有这些属性都有关联,而不能只与其中的一部分属性相关。
以下是一个示例来说明第二范式的概念。一个学生成绩表,其中包含学生ID、课程ID和成绩:
学生ID | 课程ID | 成绩 |
---|---|---|
1 | 101 | 90 |
1 | 102 | 85 |
2 | 101 | 88 |
2 | 102 | 92 |
在这个示例中,(学生ID,课程ID)是候选关键字,因为它们唯一标识了每个学生在每门课程中的成绩。这个表符合第一范式,因为每个属性都是原子的。
然而,这个表不符合第二范式,因为成绩属性部分依赖于候选关键字(学生ID,课程ID)。成绩属性依赖于学生ID和课程ID的组合,而不是它们的一部分。为了符合第二范式,可以将表拆分成两个表:一个存储学生信息,另一个存储成绩信息,以确保非主属性完全依赖于候选关键字。