第五范式 (5NF)

2025年5月26日 | 阅读 4 分钟
  • 当一个关系满足 4NF 且不包含任何 连接依赖,并且连接操作是无损的,那么该关系就处于 5NF。
  • 当所有表都尽可能地分解成多个表以避免冗余时,就满足了 5NF。
  • 5NF 也被称为投影-连接范式 (PJ/NF)。
  • 当满足所有连接依赖时,关系处于 5NF,至少满足以下方法之一:
    • (R1,R2,____,R3)是一个平凡的连接依赖。
    • 每个 Ri 都是 R 的候选键,即 R 中的每个连接依赖仅由 R 的候选键引起。

什么是连接依赖?

它规定,当一个关系分解成几个较小的关系后,必须能够通过连接公共键来重新组合成原始关系。

什么是无损分解?

良好的数据库设计方法是尽可能消除数据冗余。在关系数据库中,一种方法是将一个关系分解成多个关系。这应该确保通过连接分解后的关系来恢复原始关系。能够存储原始关系所有信息的分解称为无损分解。

现在我们考虑下面的关系 **Fact_Comp_Proj**,它处于 4NF 且不存在多值依赖。

工厂模式组件项目
GMEngine (引擎)MPC
GM变速箱125 A
本田Engine (引擎)125 A
GMEngine (引擎)125 A

三个子关系是:

R1 ( @Factory + @Component)

工厂模式组件
GMEngine (引擎)
GM变速箱
本田Engine (引擎)

R2 (@Component+ @ Project)

组件项目
Engine (引擎)MPC
变速箱125 A
Engine (引擎)125 A

R3 (@Factory + @ Project)

工厂模式项目
GMMPC
GM125 A
本田125 A

通过连接这些关系,我们再次得到原始关系 Fact_Comp_Proj,因此连接依赖成立。在此连接依赖中,组件关系只包含键的子集。

例如:关系 R1 只包含 Factory 和 Component 键,而不包含 Project 键。因此,关系 Fact_Comp_Proj 不处于 5NF。然而,关系 R1、R2 和 R3 处于 5NF,因为它们属性之间不存在依赖关系。

注意:多值依赖 (MVD) 是连接依赖的一种特殊情况,因此每个 5NF 关系也处于 4NF。

现在假设我们修改 Fact_Comp_Proj 关系,添加如下元组。该关系不再有任何连接依赖。该关系处于 5NF。

工厂模式组件项目
GMEngine (引擎)MPC
GM变速箱125 A
本田Engine (引擎)125 A
GMEngine (引擎)125 A
本田变速箱MPC

现在考虑另一个名为 RANKING 的关系,它表示一个虚构的汽车工厂排名列表。

Factory#Fact_name位置城市
F01Volvo17孟买
F11本田22金奈
F15Maruti26Gurgaon
F25GM37昌迪加尔

上述关系有两个候选键:Factory# 和 Fact_name,并满足两个连接依赖:

JD1 -> ((Factory#, Fact_name, Position), (Factory#, City))

JD2 -> ((Factory#, Fact_name, Position), (Factory#, Position), (Factory_name, City))

上述关系处于 5NF,因为构成上述连接依赖部分的分解都是该关系的候选键。

在处理 5NF 时应牢记以下几点:

  • 5NF 处理连接依赖,它是多值依赖 (MVD) 的泛化。因此,很容易看出几乎所有 5NF 关系也处于 4NF。
  • 关系处于 5NF,并且无法由多个较小的关系构成。
  • 要测试一个关系是否处于 5NF,我们需要将其分解成至少三个或更多的关系,因为它们具有循环性质。

示例 3

SUBJECTLECTURERSEMESTER
电脑AnshikaSemester 1
电脑JohnSemester 1
数学JohnSemester 1
数学AkashSemester 2
化学PraveenSemester 1

在上面的表中,John 在 Semester 1 上同时参加 Computer 和 Math 课程,但他在 Semester 2 不参加 Math 课程。在这种情况下,所有这些字段的组合都需要来识别一个有效的数据。

假设我们添加一个新的 Semester,即 Semester 3,但不知道科目以及由谁来教授该科目,因此我们将 Lecturer 和 Subject 留空。但所有三个列共同构成主键,因此我们不能将其他两列留空。

因此,为了使上面的表处于 5NF,我们可以将其分解成三个关系 P1, P2 & P3。

P1

SEMESTERSUBJECT
Semester 1电脑
Semester 1数学
Semester 1化学
Semester 2数学

P2

SUBJECTLECTURER
电脑Anshika
电脑John
数学John
数学Akash
化学Praveen

P3

SEMSTERLECTURER
Semester 1Anshika
Semester 1John
Semester 1John
Semester 2Akash
Semester 1Praveen

5NF 的缺点

5NF 的主要缺点是数据库的复杂性。它拥有大量的表和关系,这增加了数据库的复杂性并降低了性能。


下一主题DBMS 关系分解