第三范式要求不存在传递依赖关系。在这种关系中某个字段依赖于另一个字段,而那个字段又依赖于第三个字段。当一个表不符合第三范式时,表中缺少记录会导致信息丢失。我是这样理解的,仅供参考:
如学生有班级编号和学生编号。我们就不能够建立一个让学生编号和班级编号对应的中间表。而应该把班级编号也当成学生的一个属性来看。因为如果有中间表,万一中间表里有一条记录丢失了。这个学生属于那各班也就不知道了,也不容易检查出来。在表中也就产生了冗余数据。而如果是把班级编号作为学生的其中一个属性。即使这个学生的记录丢失了,也不会产生冗余数据,最多只是要重新录入而已。其实范式就是要让一个数据库的容错能力更好,不产生冗余数据,这在大型数据库中很重要。不一定。因为还有第四范式、第五范式、DKNF,这些范式防止丢失任何信息。符合越高级别的范式会带来更多的表。性能的影响也就越大。设计时根据实际需要来做。如果你不打算在这个数据库里有什么扩充,你可以不符合任何的范式,自己也可以省事一点。范式只是一些规范而已。就象软件工程学一样。是不是设计任何程序都要按软件工程学的要求来做呢?我想你也不想太麻烦吧。我认为工程越大,就越需要符合这些规范,至于小的工程也就不需要考虑这么多了。