证明三范式一定是二范式

很多人都陷入先入为主的思维,因为一开始教科书上给的图片就是三范式包含在二范式里面,又说是二范式去除了传递依赖就是三范式,所以结论显而易见巴拉巴拉。

但是三范式的定义是 R如果是一范式,那么R中不存在这样的码X,属性组Y以及非主属性Z(Z不属于Y)使得X->Y,Y->Z成立,Y不依赖于Z,则称R属于三范式

整个定义里面并没有关键的二范式中提到的 部分依赖问题,那到底怎么证明呢?

显然 我们假设 R是三范式但是不是二范式来反证:
如果R是三范式,既满足定义,但是不满足二范式,我们设R中属性为为 primarykey1,primarykey2,normal,其中依赖关系只有primarykey1->normal,那么主码应该是(key1,key2),既有(key1,key2)->key1,key1->normal,(key1,key2)->normal,我想到这里聪明的你已经看出来哪里不对了,因为这与定义中的X->Y,Y->Z 且 Y不依赖于Z 和 Z不属于Y都不冲突,即R中存在这样的关系,这与R是三范式矛盾,因此得出R如果是三范式,一定是二范式的结论,证明完毕。

由此可以得出,如果在不考虑平凡依赖关系的情况下,非主属性不存在间接依赖(传递依赖),就一定不存在部分依赖

当然了,主属性依然可能存在部分依赖的问题,不过那就是BCNF范式的事情了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 数据库基础Database4-数据库设计 六 关系设计库设计 一个关系模式: R(U, F) 其中: 关系名R是符...
    sunblog阅读 5,795评论 0 1
  • 作者:Shocker 链接:https://shockerli.net/post/1000-line-mysql-...
    催化剂阅读 2,166评论 0 0
  • 3.4 说说相等和内部表示 在Lisp中主要有5种相等断言,因为不是所有的对象被创建的时候都是相等意义上的相等。数...
    geoeee阅读 5,901评论 0 6
  • 指出下列关系模式是第几范式?并说明理由 (1)R(X,Y,Z),F={XY->Z} 主码为XY,不存在部分函数依赖...
    80b8阅读 8,897评论 0 1
  • 在了解范式问题之前,需要明确的概念 (1)键和码在数据库中真是傻傻分不清楚 候选码:不含多余属性的超码,即对于候选...
    TechGraver阅读 4,724评论 0 1

友情链接更多精彩内容