1. 第二范式(2NF):
当一个关系已经处于第一范式并且不存在非主要属性应该在功能上依赖于主要属性的部分函数依赖时,则称该关系处于第二范式。它是由 EF Codd 在 1971 年给出的。如果候选键只包含单个属性并且关系在 1NF 中,那么它已经在 2NF 中。 2NF 检查关系的概念适用于存在复合候选键且候选键包含多个属性的情况。
例子:
考虑具有函数依赖关系的关系 R(A, B, C, D):{AB–>CD, BC–>D}
Closure of (AB)={A, B, C, D}
所以AB是候选键。
关系 R 在 1NF 中,因为关系 DBMS 不允许多值或复合属性。
在 AB–>CD (AB 是候选键,C、D 是非素数)
在 BC–>D(BC 是非素数,D 是非素数,这在 2NF 中是允许的)
关系 R 在 2NF 中,因为没有素数属性派生非素数属性,即没有部分函数依赖。
关系 R 不在 3NF 中,因为非主要属性正在派生非主要属性。
2. 第三范式(3NF):
当一个关系已经处于第一范式和第二范式并且每个非素数属性都非传递依赖于关系的超键或在简单语言中没有传递函数依赖时,就说它处于第三范式。它也是由 EF Codd 在 1971 年给出的。在这种形式中,减少了数据重复并确保了参照完整性。如果下面给出的条件之一为真,则具有函数依赖关系 A–>B 的关系 R 处于 3NF 中。
- A 是一个超级键。
- B是素数属性,即B是候选键的一部分。
例子:-
考虑具有函数依赖关系的关系 R(A, B, C) {AB–>C, C–>A}
Closure of (AB)={A, B, C}
Closure of (BC)={A, B, C}
Candidate keys are-{AB, BC}
关系 R 在 1NF 中,因为关系 DBMS 不允许多值或复合属性。
AB-->C(prime deriving prime)
C-->A(prime deriving prime)
所以关系 R 在 2NF 和 3NF 中也是因为没有素数导出非素数,也没有非素数导出非素数,即没有部分函数依赖和传递函数依赖。
2NF 和 3NF 的区别:
S.NO. | 2NF(Second Normal Form) | 3NF(Third Normal Form) |
---|---|---|
1. | It is already in 1NF. | It is already in 1NF as well as in 2NF also. |
2. | In 2NF non-prime attributes are allowed to be functionally dependent on non-prime attributes. | In 3NF non-prime attributes are only allowed to be functionally dependent on Super key of relation. |
3. | No partial functional dependency of non-prime attributes are on any proper subset of candidate key is allowed. | No transitive functional dependency of non-prime attributes on any super key is allowed. . |
4. | Stronger normal form than 1NF but lesser than 3NF | Stronger normal form than 1NF and 2NF. |
5. | It eliminates repeating groups in relation. | It virtually eliminates all the redundancies. |
6. | The goal of the second normal form is to eliminate redundant data. | The goal of the third normal form is to ensure referential integrity. |