DBMS中1NF和2NF的区别

DBMS中1NF和2NF的区别

1. 第一范式(1NF)

对于任何符合第一范式 (1NF) 的关系,该关系不应包含任何复合或多值属性。因此,如果关系包含原子值,它将处于第一范式。关系应该只包含单值属性。因此,处于第一范式的关系必须遵循以下规则:

  • 关系中不应该有重复的组或元素,即它应该只包含单值属性。
  • 应该为表中的每个属性指定一个唯一名称。
  • 它不应包含任何复合属性。

例子:

考虑以下关系:

DBMS中1NF和2NF的区别

这种关系在 1NF 中,因为它不包含任何多值或复合属性。

2. 第二范式(2NF)

第二范式的基本概念是全函数依赖。因此它适用于包含复合键的关系(其中主键由多个属性组成)。因此,任何包含单个属性主键的关系始终是 2NF(第二范式)。因此,包含复合主键以便在 2NF 中的关系不应包含任何部分依赖。当任何非素数属性依赖于候选键的任何适当子集时,就会发生部分依赖。因此,每个非素数属性都应该依赖于关系中的每个候选键的整体。因此,一个关系在 2NF 中,如果:

  • 它是 1NF(第一范式)。
  • 它不包含任何部分依赖。

例子:

考虑关系 R(X, Y, E, F) 的函数依赖关系。

{XY->EF, E->F}

因此,我们找到 (XY) 的闭包,即 {X, Y, E, F}
由于它的闭包包含关系中的所有属性,因此 XY 是候选键。对于每个函数依赖,即 XY->EF
它不包含任何部分依赖,因为非主要属性依赖于整个候选键。
E->F:它不包含任何部分依赖,因为这里的非素数属性仅相互依赖。

1NF 和 2NF 的区别:

编号 1NF 2NF
1 在 1NF 中,任何关系都必须是原子的,并且不应包含任何复合或多值属性。 在 2NF 中,任何关系都必须在 1NF 中并且不应该包含任何部分依赖。
2 函数依赖的识别对于第一范式来说不是必须的。 第二范式需要函数依赖的识别。
3 第一范式只处理表的模式,不处理更新异常。 第二范式处理更新异常。
4 1NF 中的关系可能在也可能不在 2NF 中。 2NF 中的关系总是在 1NF 中。
5 第一范式的主键可以是复合键。 第二范式的主键不能是复合键,以防它产生任何部分依赖。
6 第一范式的主要目标是消除表内的冗余数据。 第二范式的主要目标是真正保证数据的依赖关系。
7 第一个范式比第二个范式强。 第二范式比第一范式强。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程