什么是 DBMS 中的 1NF?举例说明

如果一个关系包含原子值,它就属于 1NF。它指出表的一个属性不能包含多个值。它必须只包含单值属性。第一范式不允许多值属性、复合属性及其组合。

要求

设计 1 NF 时要考虑的要求解释如下 -

  • 每个表都有一个主键(可以唯一标识记录的最小属性集)。

  • 表的每一列中的值都是原子的(不允许使用 multi0value 属性)。

  • 没有重复的组(两列不在同一个表中存储相似的信息)。

示例 1

考虑一个关系学生(rollno,姓名,分支机构,地址,电话)。

罗尔诺名称分支地址电话
1AAACSE海得拉巴3242344,4564555,3112453
2BBBECE德里3452245,4323245

上述关系不在 1NF 中,因为电话是一个多值属性,一个人有多个号码。

现在我们通过为每个号码创建一个新行来表示上表,如下所示 -

罗尔诺名称分支地址电话
1AAACSE海得拉巴3242344
1AAACSE海得拉巴4564555
1AAACSE海得拉巴3112453
2BBBECE德里3452245
2BBBECE德里4323245

由于号码,上表包含冗余数据,对于每个号码,我们必须重复学生的所有信息。所以电话属性应该和上表分开。

我们将上表 R 划分或分解为两个表,这是规范化的概念 -

R1(键,多值属性),R2(R-多值属性)

=> R1(rollno,电话),R2(rollno,名称,分支机构,地址)。

分解 1NF 表的步骤如下-

  • 将出现在重复组中的所有项目放入新表中。

  • 为每个生成的新表找到一个主键。

  • 在新表中复制从中提取重复组的表的主键,反之亦然。

R1

罗尔诺电话
13242344
14564555
13112453
23452245
24323245

R2

罗尔诺名称分支地址
1AAACSE海得拉巴
2BBBECE德里

R1和R2在1NF中。

R1 的键 = rollno

R2 的键 = (rollno, phone)

示例 2

考虑另一个例子来检查给定的表是否为 1NF,如果不是则尝试转换为 1NF。

非标准化表 R1

课程内容
ProgrammingC、C++、Java
Scripting languageHTML, javascript

归一化表 (1NF)

课程内容
ProgrammingC
ProgrammingC++
Programming爪哇
Scripting languageHTML
Scripting languagejavascript

以上是 什么是 DBMS 中的 1NF?举例说明 的全部内容, 来源链接: utcz.com/z/317358.html

回到顶部