给个简洁的判断方法:
1NF:每个数据项都是最小单元,不可分割,其实就是确定行列之后只能对应一个数据,形象点就是你不对Exel作拆分单元格。 其实数据库管理系统生成的最起码也是第一范式。
2NF:非主属性不部分依赖于候选码
3NF:非主属性不传递依赖于候选码
BCNF:在满足第二第三范式的情况下,主属性内部也不能部分或传递依赖。判断方法:箭头左边的必须是候选码,不是候选码的就不是BC范式。
4NF没有多值依赖
至于不懂的概念性问题。看书吧少年。
1NF, 字段不可再分。这个关系数据库强制了,想建立复合的字段也建立不起来。关系数据库出现之前才有这个问题。
2NF,主键依赖,就是一张表里面的字段,必须是跟主键相关的,不能把无关的数据放进来。主键依赖,实质就是,这个信息如果是对象的属性,就放进来,否则就不放。
3NF,就是不能重复存储相同的信息。这个情况,其实是在一个对象里引用了另外一个对象,这个时候,存一个引用就够了,而不是重复的存储这个对象的多个副本。
2NF和3NF的本质是,对象的属性依赖对象。
作者:软件民工链接:https://www.zhihu.com/question/24696366/answer/133284744来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
搬运工觉得这个讲解对于初步学习的人比较好。
数据库范式那些事
总结:
1NF: 字段是最小的的单元不可再分
2NF:满足1NF,表中的字段必须完全依赖于全部主键而非部分主键 (一般我们都会做到)
3NF:满足2NF,非主键外的所有字段必须互不依赖
4NF:满足3NF,消除表中的多值依赖
作者:HioHio链接:https://www.zhihu.com/question/24696366/answer/36839826来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
看这个足矣:
https://www.cnblogs.com/CareySon/archive/2010/02/16/1668803.html