发布网友 发布时间:2023-12-23 04:56
共1个回答
热心网友 时间:2024-07-21 15:08
第三范式3NF的定义
定义6.7 设关系模式R<U,F>∈1NF,若R中不存在这样的码X、属性组Y及非主属性Z(Z⊈Y), 使得X→Y,Y→Z成立,Y→X不成立,则称R<U,F> ∈3NF。(源自王珊 萨师煊 数据库系统概论(第5版),高等教育出版社,2015)
注意:之前版本Y不是Z子集,最新版更正了:Z不是Y子集,也就是说Y->Z是非平凡的函数依赖。
然后回到不是第二范式的一个例子:
关系模式R(Sno, Cno, Sdept, Grade)中函数依赖是Sno->Sdept, (Sno, Cno)->Grade ,因此(Sno,Cno)是码,非主属性是Sdept和Grade,存在非主属性对码的部分依赖Sno->Sdept,R不属于2NF,因此R最高满足第一范式,即R∈1NF。
证明满足3NF一定满足2NF,用反证法。假设R满足3NF,不满足2NF,那么存在着部分函数依赖,即如上面例子的情况。由上面例子我们可以得到:(Sno, Cno) -> Sno, Sno不能-> (Sno,Cno),Sno -> Sdept, 这个与R满足3NF矛盾,因此满足三范式一定是二范式。
抽象一点证明:关系模式R(Key, B, C)中,Key由A1, A2,..., Ak属性构成,非主属性(集)B,C;假设满足3NF但不满足2NF,因此存在部分依赖Ai -> B, 然而根据3NF定义,R不满足3NF,因为存在Key -> Ai, Ai不能-> Key,Ai->B。这个与满足3NF矛盾,得证。
注意:3NF定义中,没有要求 X->Y是非平凡的函数依赖,对于Y->Z要求是非平凡的函数依赖(Z不能是Y的子集)。
这个是大学本科学习数据库这门课程,存在疑惑的一个问题,本来想搜一下解答,但遗憾的是都没有明确给出,这里就一并作答了。
觉得好,点个赞!2022.6.10于南京。