第五范式(5NF) ,也称为项目连接范式(PJNF) 。它是一种数据库规范化级别,旨在减少关系数据库中的冗余。当且仅当一个关系满足 4NF 并且不存在连接依赖关系时,才称其为 5NF。如果一个关系可以通过连接多个子关系重新创建,并且这些子关系中的每一个都具有原始关系的属性子集,则称该关系具有连接依赖性。
加入依赖的条件:
如果 R1 和 R2 在 Q 上的连接等于关系 R,那么我们可以说存在连接依赖,其中 R1 和 R2 是给定关系 R ( P、Q、S)。 R1 和 R2 是 R 的无损分解。
5NF的特性:
关系 R 是 5NF 当且仅当它满足以下条件:
- R 应该是 4NF(不存在多值依赖)。
- 它不能进行无损分解(连接依赖)
示例:考虑下面具有模式 R(供应商、产品、消费者)的关系R。主键是关系的所有三个属性的组合。
表格1
supplier | product | consumer |
---|---|---|
S1 | P1 | C1 |
S1 | P2 | C1 |
S2 | P1 | C1 |
S3 | P3 | C3 |
表 2
supplier | product |
---|---|
S1 | P1 |
S1 | P2 |
S2 | P1 |
S3 | P3 |
表3
consumer | product |
---|---|
C1 | P1 |
C1 | P2 |
C3 | P3 |
表 4
supplier | consumer |
---|---|
S1 | C1 |
S2 | C1 |
S3 | C3 |
解释:
表 2、表 3 和表 4 连接时产生原始表(表 1)。因此连接依赖存在于表 1 中,因此表 1 不在 5NF 或 PJNF 中。但是表 2、表 3 和表 4 满足 5NF,因为它没有多值依赖,不能进一步分解(不存在连接依赖)。但这可能并非在所有情况下都是如此,即,当我们组合分解表时,结果表可能不等同于原始表,在这种情况下,原始表被称为 5NF,前提是它已经在 4NF 中。然而,5NF 并未应用于实际场景,仍然局限于理论概念。