如果它是Boyce Codd范式,并且没有多值依赖关系,那么关系将是4NF。
对于依赖性A→B
,如果对于单个A
值,存在多个B
值,则该关系将是多值依赖性。
示例
STUDENT 表结构和数据如下 -
STU_ID | COURSE | HOBBY |
---|---|---|
21 | Computer | Dancing |
21 | Math | Singing |
34 | Chemistry | Dancing |
74 | Biology | Cricket |
59 | Physics | Hockey |
上面给定的STUDENT
表是符合3NF
,但COURSE
和HOBBY
是两个独立的实体。因此,COURSE
和HOBBY
之间没有关系。
在学生关系中,一个学生的STU_ID
是21
,它有两门课程,计算机和数学以及两个爱好,舞蹈和歌唱。 因此,对STU_ID
存在多值依赖性,这导致不必要的数据重复。
因此,要将上表转换为4NF ,我们可以将其分解为两个表:
STUDENT_COURSE 表的结构和数据 -
STU_ID | COURSE |
---|---|
21 | Computer |
21 | Math |
34 | Chemistry |
74 | Biology |
59 | Physics |
STUDENT_HOBBY 表的结构和数据 -
STU_ID | HOBBY |
---|---|
21 | Dancing |
21 | Singing |
34 | Dancing |
74 | Cricket |
59 | Hockey |