创建第一个范式 (DBMS) 的示例表
如果表具有数据冗余并且未正确规范化,则将难以处理和更新。如果关系包含复合或多值属性,则违反第一范式。
如果存在以下条件,则表格为1Nf-
只有单值属性。
属性域不会改变。
每个属性或列都有一个唯一的名称。
数据的存储顺序无关紧要。
示例
考虑下表-
上表为非规范化形式,课程属性具有违反1NF的多值属性。
现在我们通过为每个课程创建一个新行来表示上表-
由于课程原因,上表包含冗余数据,对于每个课程编号,我们必须重复学生的所有信息。所以课程属性应该与上表分开。
我们将上表R划分或分解为两个表,这是规范化的概念-
R1(键,多值属性),R2(R-多值属性)
=>R1(Id,course),R2(Id,name)。
分解1NF表的步骤
将出现在重复组中的所有项目放入新表中。为每个生成的新表找到一个主键。在新表中复制从中提取重复组的表的主键,反之亦然。
R1
R2
R1和R2在1NF中。
R1的密钥=ID
R2的键=(rollno,course)
上表现在处于1NF中,因为不存在多值属性。但它不在2NF中,因为ID->名称是部分依赖{因为名称取决于键的一部分}
异常
该表还存在以下异常-
插入异常-除非我们有学生必须参加该科目,否则我们不能在表中插入新课程,例如“C6”。
更新异常-如果我们将课程从C2更改为C5,我们必须在多个地方进行更改,否则表格将不一致。