在第二范式(2NF)中,首先关系必须是1NF。
在第二范式(2NF)中,所有非关键属性都完全依赖于主键。
示例: 假设学校存储教师和教授科目信息相关的数据。 在学校里,教师可以教授多个科目。
老师(TEACHER
)表的结构和数据如下 -
TEACHER_ID | SUBJECT | TEACHER_AGE |
---|---|---|
25 | Chemistry | 30 |
25 | Biology | 30 |
47 | English | 35 |
83 | Math | 38 |
83 | Computer | 38 |
在给定的表中,非主要属性TEACHER_AGE
依赖于TEACHER_ID
(TEACHER_ID
列有两个83
的值,同样对应的TEACHER_AGE
属性的值都是38
),它是候选键的适当子集。 这就是它违反2NF规则的原因。
要将给定的表转换为2NF,我们将其分解为两个表:
TEACHER_DETAIL 表的结构和数据如下 -
TEACHER_ID | TEACHER_AGE |
---|---|
25 | 30 |
47 | 35 |
83 | 38 |
TEACHER_SUBJECT 表的结构和数据如下 -
TEACHER_ID | SUBJECT |
---|---|
25 | Chemistry |
25 | Biology |
47 | English |
83 | Math |
83 | Computer |