如果它在4NF 中并且不包含任何连接依赖关系并且连接应该是无损的,则关系在5NF 中。
当所有表都被分成尽可能多的表以便避免冗余时,满足5NF 。
5NF 也称为项目连接正常形式(PJ/NF)。
示例 -
SUBJECT | LECTURER | SEMESTER |
---|---|---|
Computer | Anshika | Semester 1 |
Computer | John | Semester 1 |
Math | John | Semester 1 |
Math | Akash | Semester 2 |
Chemistry | Praveen | Semester 1 |
在上表中,John
为第一学期提供计算机和数学课程,但他没有学习第二学期的数学课程。在这种情况下,需要组合所有这些字段来识别有效数据。
假设添加了一个新学期:第3学期,但不知道科目以及由哪个讲师来讲该科目,因此将讲师(Lecturer)和科目(Subject)留为NULL
。 但是这三个列要组合在一起充当主键,因此不能将其他两列留空(NULL
)。
因此,为了使上表成为5NF ,可以将它分解为三个关系P1
,P2
和P3
:
P1 表 -
SEMESTER | SUBJECT |
---|---|
Semester 1 | Computer |
Semester 1 | Math |
Semester 1 | Chemistry |
Semester 2 | Math |
P2 表 -
SUBJECT | LECTURER |
---|---|
Computer | Anshika |
Computer | John |
Math | John |
Math | Akash |
Chemistry | Praveen |
P3 表 -
SEMSTER | LECTURER |
---|---|
Semester 1 | Anshika |
Semester 1 | John |
Semester 1 | John |
Semester 2 | Akash |
Semester 1 | Praveen |