先从第一范式说起吧:
1NF就是每个属性(一般都指table中的字段)都具有原子性,例如:“月总收入”可以细分为若干的收入项目,因此存在这样属性的范式就不是1NF;2NF就是在1NF的基础上,每个非主属性(主属性一般指关键字)都完全依赖于主属性,例如范式 f{A->BC, X->C},其中的主关键字是{A,X},非主属性是C,C可由A推导出,也可又X推导出,因此它是部分以来于主属性的;而f{AC->B}中,主关键字是{A,C},非主属性是B,B需要A,C来共同推导出,因此是完全依赖于主属性的;3NF就是在2NF的基础上,不存在传递推导,例如f{A->B, B->C},就存在A->B->C的传递推导,因此就不是3NF;总的来说,范式越高,就越严格;但在实际的数据库设计中,并非越高越好,好要根据实际的应用情况具体分析,有些时候为了提高查询的速度,要牺牲一定的规范,还要产生一定的数据冗余。
1NF就是每个属性(一般都指table中的字段)都具有原子性,例如:“月总收入”可以细分为若干的收入项目,因此存在这样属性的范式就不是1NF;2NF就是在1NF的基础上,每个非主属性(主属性一般指关键字)都完全依赖于主属性,例如范式 f{A->BC, X->C},其中的主关键字是{A,X},非主属性是C,C可由A推导出,也可又X推导出,因此它是部分以来于主属性的;而f{AC->B}中,主关键字是{A,C},非主属性是B,B需要A,C来共同推导出,因此是完全依赖于主属性的;3NF就是在2NF的基础上,不存在传递推导,例如f{A->B, B->C},就存在A->B->C的传递推导,因此就不是3NF;总的来说,范式越高,就越严格;但在实际的数据库设计中,并非越高越好,好要根据实际的应用情况具体分析,有些时候为了提高查询的速度,要牺牲一定的规范,还要产生一定的数据冗余。
》》TableB(学生编号,班级,系别),由学生编号可知学生所在的班机,又班级可知所在
的系别,存在传递推导,因此不是3NF.我想知道,3NF的作用。就向上面所说,知道他不是3NF,那又有什么用呢?
要想试用,请汇10元到北京中南海传达室,张大爷或张大妈或张他妈收,预知后事请听<<大话东游8.0(R)>>续集!此工具可能今年上半年会全球发行价格为100000美金,不过我这里只收10RMB.
好了,要用这个超级编程工具VZ,就汇10RMB,只要10元,真的(记得留下您的EMAIL地址)...
5 分钟后即可收到这个大礼包!!!中国的程序员们,加油啊!有这么好的工具不用,哪里对得起你们的老娘!
你发什么神经!!
Nicrosoft(奈软)和songhtao(三十年孤独)说得很好了呀!要达到一定规范的范式,需要进行范式分解,我认为你可以找本数据库设计概论方面的书来好好看看,会对你的数据库设计有很大的帮助的。如果一个程序在需求分析阶段做得不好的话,以后的工作会让你很痛苦的!