第四范式(4NF)2025年5月26日 | 阅读 3 分钟 引言在讨论第四范式之前,应该了解多值依赖。这是第一范式(1NF)的一个结果,它不允许一个元组中的一个属性包含一组值。 到目前为止开发的范式只处理函数依赖。对于一个处于3NF或BCNF的关系,在更新、插入和删除时仍然可能出现异常。当多值依赖未得到妥善处理时,就会发生这种情况。为了消除由这些依赖引起的异常,引入了第四范式(4NF)的概念。
为了解释 4NF 的概念,让我们考虑下面的“员工关系”。该关系包含所有三个属性,并充当主键,因为没有单个属性可以唯一标识一条记录。
Empname 和 Equipment 之间的关系是多值依赖,因为在 Employee 关系中,对于每一对 (Emp_name, Language) 值,相关的 Equipment 值集仅由 Empname 确定,并且独立于 Language。 Equipment Anurag, English = Equipment Anurag, French = { 个人电脑, 大型机 } Equipment Kapil, English = Equipment Anurag, French = { 个人电脑, 大型机 } = Equipment Kapil , Japanese = { 个人电脑 } 因此,这表明 Emp_Name ->-> Equipment 类似地,Emp_name 和 Language 之间的关系是多值依赖,表示为 Emp_Name ->-> Language 因此,为了将具有多值依赖的表转换为 4NF,请将每个多值依赖对移到一个新关系中,如下所示。 Emp_Equip
Emp_Lang
因此,我们看到源关系 Employee 无损地分解为子关系。 Emp_Equip (@Emp_name + @Equipment)Emp_Lang (@Emp_name + @Langauge) 其中 @ 符号表示主键。 生成的关系 Emp_Equip(分配给员工的各种设备)和 Emp_Lang(员工熟悉的各种语言)都处于 4NF。 示例 2学生
给定的 STUDENT 表处于 3NF,但 COURSE 和 HOBBY 是两个独立实体。因此,COURSE 和 HOBBY 之间没有关系。 在 STUDENT 关系中,STU_ID 为 **21** 的学生有两门课程 **Computer** 和 **Math**,以及两个爱好 **Dancing** 和 **Singing**。因此,STU_ID 存在多值依赖,导致不必要的数据重复。 因此,为了将上述表转换为 4NF,我们可以将其分解为两个表 STUDENT_COURSE
STUDENT_HOBBY
关于 4NF 的常见问题解答1. 列出 4NF 的各种好处?
2. 实现 4NF 的技术有哪些? 实现 4NF 的各种技术如下所示:
下一主题DBMS 5NF |
我们请求您订阅我们的新闻通讯以获取最新更新。