范式:关系数据库中的关系是要满足一定要求的,满足不同程度要求的不同范式。满足最低要求的叫第一范式,简称1NF ,在第一范式中满足进一步要求的为第二范式,其余以此类推。通俗来说是满足数据库关系表中的一套规则。
范式理论研究:Codd提出1NF,2NF,3NF概念
2NF
例如:有关系模式S-L-C(Sno,Sdept,Sloc,Cno,Grade),其中Sloc为学生的住处,并且每个系的学生住在同一个地方。S-L-C的码为(Sno,Cno)。则函数依赖:Grade对(Sno,Cno)是完全依赖函数。这就属于2NF。
当然 (Sno,Cno)—>Sdept 只需要其中一个Sno或Cno就能推出Sdept。记做Sdept对(Sno,Cno)码的部分函数依赖,那么这就不属于2NF。
一个R关系模式不属于2NF就会产生以下几个问题:
(1).插入异常:假若要插入一个学生Sno=S7,Sdept=PHY,Sloc=BLD2,但该学生还没有选课。即这个学生无Cno。这样的元组就插不进S-L-C中。因而学生的固有信息无法插入
(2)删除异常:当要删除如一个学生要删除某一个门课程,而课程属性是主属性,删除了课程整个元组就必须一起删除,使这个学生的信息也被删除了,从而造成删除异常。
3NF
没有传递依赖,如:关系模式SJP(S,J,P)中,S是学生,J代表课程,P代表名次,T表示教师。每一个学生选修每门课程的成绩有一定的名次,每门课程中每一名次只有一个学生。由此得到函数依赖
(S,J)—>P;(J,P)—>S T—>J 这就是3NF
总结: 1NF就是不能有表中表
2NF就是非主属性全部依赖
3NF就是没有传递函数