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

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

如果存在以下条件,则表格为 1Nf -

  • 只有单值属性。

  • 属性域不会改变。

  • 每个属性或列都有一个唯一的名称。

  • 数据的存储顺序无关紧要。

示例

考虑下表 -

ID名称课程
1一种C1,C2
2C3
3C2,C3

上表为非规范化形式,课程属性具有违反 1NF 的多值属性。

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

ID名称课程
1一种C1
1一种C2
2C3
3C2
3C4

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

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

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

=>R1(Id, course), R2(Id, name)。

分解1NF表的步骤

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

R1

ID课程
1C1
1C2
2C3
3C2
3C4

R2

ID名称
1一种
2
3

R1和R2在1NF中。

R1 的密钥 = ID

R2 的键 = (rollno, course)

上表现在处于 1NF 中,因为不存在多值属性。但它不在 2NF 中,因为 ID-> 名称是部分依赖 {因为名称取决于键的一部分}

异常

该表还存在以下异常 -

  • 插入异常- 除非我们有学生必须参加该科目,否则我们不能在表中插入新课程,例如“C6”。

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

以上是 创建第一个范式 (DBMS) 的示例表 的全部内容, 来源链接: utcz.com/z/338757.html

回到顶部