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