1.概念定义
第一范式:如果关系模式R所有的属性均为简单属性,即每个属性都是不可分的,则称R属于第一范式,简记为1NF,记做R∈1NF。
第二范式:如果关系模式R∈1NF,且每个非主属性都完全函数依赖于R的候选键,则称R属于第二范式,简记为2NF,记为R∈2NF。
第三范式:如果关系模式R∈2NF,并且每个非主属性都不传递函数依赖于R的候选键,则称R属于第三范式,简记为3NF,记为R∈3NF。
2.学习心得
如加粗字体可见,每个范式都是对属性做出了一些限制,如果一个表中的属性,不满足某一范式的标准,则需要将其拆解成两张或者多张表结构。
第一范式所作出的规范是,行列无序,列不可再分,满足基本表的原子性。
第二范式所作出的规范是,要有唯一主键,其他非主属性,都要依赖于这个主属性。
第三范式所作出的规范是,不能有传递依赖的情况,即只有父子结构,不能出现父子孙的结构。
拿个例题来解释一下第二范式和第三范式:
有表Student(Sno,Sname,Sage,Sdept,Mname,Cno,Cname),其中Sno,Sname,Sage,Sdep为学生的基本信息,即学号、姓名、年龄、专业。Mname为导师。Cno,Cname分别是课程编号和课程名称。Sno、Cno分别是两个主键。
若要让此表满足第二范式,则需将连个主键划分到不同的表中。即添加Class表,Class(Cno,Cname),Student(Sno,Sname,Sage,Sdept,Mname)。
在Student表中有这样的结构Sno→Sdept→Mname,即Mname不是直接依赖于Sno,而是通过Sdept间接依赖于Sno。所以这不满足3NF。若要满足3NF,应新建表D(Mname,Sdept),将Mname从Student表中删除。