创建一个符合第一范式 (DBMS) 的示例表

dbmsdatabasebig data analytics更新于 2026/1/13 3:37:17

如果表存在数据冗余且未正确规范化,则处理和更新将非常困难。如果关系包含复合属性或多值属性,则违反第一范式。

如果满足以下条件,则表符合 1Nf 范式 −

  • 只有单值属性。
  • 属性域不变。
  • 每个属性或列都有唯一的名称。
  • 数据存储顺序无关紧要。

示例

考虑下表 −

IdNameCourse
1AC1,C2
2EC3
3BC2,C3

上表为非规范化形式,课程属性包含多值属性,违反了第一范式 (1NF)。

现在,我们通过为每个课程创建一个新行来表示上表,行号为 −

IdNameCourse
1AC1
1AC2
2EC3
3BC2
3BC4

由于课程原因,上表包含冗余数据,因为对于每个课程号,我们必须重复所有学生的信息。因此,课程属性应该与上表分开。

我们将上表 R 拆分为两个表,这就是规范化 − 的概念。

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

=>R1(ID,课程),R2(ID,姓名)。

分解 1NF 表的步骤

将重复组中出现的所有项目放入一个新表中。为每个生成的新表找到一个主键。在新表中复制提取重复组的表的主键,反之亦然。

R1

IdCourse
1C1
1C2
2C3
3C2
3C4

R2

IdName
1A
2E
3B

R1 和 R2 符合第一范式 (1NF)。

R1 的键 = ID

R2 的键 = (rollno, course)

由于不存在多值属性,上表现在符合第一范式 (1NF)。但它不符合第二范式 (2NF),因为 ID->2。名称是部分依赖项 {因为名称依赖于键的一部分}

异常

该表还存在以下异常 −

  • 插入异常 − 除非有学生必须选修该课程,否则我们无法在表中插入新课程,例如"C6"。

  • 更新异常 − 如果我们将课程从 C2 更改为 C5,则必须在多个位置进行更改,否则表格将不一致。


相关文章