什么是 DBMS 中的 1NF?举例说明
如果一个关系包含原子值,它就属于 1NF。它指出表的一个属性不能包含多个值。它必须只包含单值属性。第一范式不允许多值属性、复合属性及其组合。
要求
设计 1 NF 时要考虑的要求解释如下 -
每个表都有一个主键(可以唯一标识记录的最小属性集)。
表的每一列中的值都是原子的(不允许使用 multi0value 属性)。
没有重复的组(两列不在同一个表中存储相似的信息)。
示例 1
考虑一个关系学生(rollno,姓名,分支机构,地址,电话)。
罗尔诺 | 名称 | 分支 | 地址 | 电话 |
---|---|---|---|---|
1 | AAA | CSE | 海得拉巴 | 3242344,4564555,3112453 |
2 | BBB | ECE | 德里 | 3452245,4323245 |
上述关系不在 1NF 中,因为电话是一个多值属性,一个人有多个号码。
现在我们通过为每个号码创建一个新行来表示上表,如下所示 -
罗尔诺 | 名称 | 分支 | 地址 | 电话 |
---|---|---|---|---|
1 | AAA | CSE | 海得拉巴 | 3242344 |
1 | AAA | CSE | 海得拉巴 | 4564555 |
1 | AAA | CSE | 海得拉巴 | 3112453 |
2 | BBB | ECE | 德里 | 3452245 |
2 | BBB | ECE | 德里 | 4323245 |
由于号码,上表包含冗余数据,对于每个号码,我们必须重复学生的所有信息。所以电话属性应该和上表分开。
我们将上表 R 划分或分解为两个表,这是规范化的概念 -
R1(键,多值属性),R2(R-多值属性)
=> R1(rollno,电话),R2(rollno,名称,分支机构,地址)。
分解 1NF 表的步骤如下-
将出现在重复组中的所有项目放入新表中。
为每个生成的新表找到一个主键。
在新表中复制从中提取重复组的表的主键,反之亦然。
R1
罗尔诺 | 电话 |
---|---|
1 | 3242344 |
1 | 4564555 |
1 | 3112453 |
2 | 3452245 |
2 | 4323245 |
R2
罗尔诺 | 名称 | 分支 | 地址 |
---|---|---|---|
1 | AAA | CSE | 海得拉巴 |
2 | BBB | ECE | 德里 |
R1和R2在1NF中。
R1 的键 = rollno
R2 的键 = (rollno, phone)
示例 2
考虑另一个例子来检查给定的表是否为 1NF,如果不是则尝试转换为 1NF。
非标准化表 R1
课程 | 内容 |
---|---|
Programming | C、C++、Java |
Scripting language | HTML, javascript |
归一化表 (1NF)
课程 | 内容 |
---|---|
Programming | C |
Programming | C++ |
Programming | 爪哇 |
Scripting language | HTML |
Scripting language | javascript |
以上是 什么是 DBMS 中的 1NF?举例说明 的全部内容, 来源链接: utcz.com/z/317358.html