数据库关系模型范式总结

              [size=small]数据库关系模型范式总结
     到目前为止,数据库中应用最广泛的是关系数据库。根据满足不同程度的要求,把范式分为:一范式(1NF),二范式(2NF),三范(3NF),BCNF范式,4NF等等。。。
    (1)、一范式(1NF)的规范化过程
    在数据库表中,每个属性都是不可再分的数据项(原子性),则该关系属于一范式。也就是说不允许表中含表的情况。第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库。
    (2)二范式(2NF)的规范化过程
    如果某关系满足一范式,并且它的所有非主属性都完全函数依赖于主键,则该关系满足二范式。也就是在一范式的基础上消除了非主属性对主键的部分函数依赖。在判定是否为二范式时,一旦发现有一个非主属性部分函数依赖于主键,则判定它不属于二范式。
   例如:关系模式 SLC(Sno, Sdept, Sloc, Cno, Score),其中Sno为学号、Sdept为系名、Sloc为学生住处,每个系的学生住在同一个地方。Cno为课程号、Score为学生成绩。其中每个学生可以选修多门课程,一门课程可以被多个学生选修。一个学生选定一门课程后就会产生一个成绩。其函数依赖集合为F={Sno→Sdept,Sdept→Sloc,(Sno,Cno)→Score}根据语义,主键为属性组合(Sno、Cno)。函数依赖图如下:
    因为Sno→Sdept,所以(Sno,Cno)→Sdept
    同样Sno→Sloc,所以(Sno,Cno)→Sloc
   可以看到非主属性Sdept、Sloc部分函数依赖于码。所以SLC∈2NF。
     (3)三范式(3NF)的规范化过程
     三范式(3NF):如果某关系模式满足第二范式,并且它的任何一个非主属性都不传递依赖于主键,则满足第三范式。
    例如:上述例子中的关系模式SC(Sno, Cno, Score)。根据语义,主键为属性组合(Sno、Cno)。主键(Sno、Cno)函数确定非主属性Score,不存在非主属性对码的传递函数依赖,满足3NF。
    再如:上述例子中的关系模式SL(Sno、Sdept、Sloc),存在传递依赖Sno→Sdept,Sdept→Sloc,所以不是三范式(3NF)。
     注意:一个关系模型R若低于3NF范式,就会产生插入异常,删除异常,冗余度大等问题。
   (4)小结
   2NF→3NF:消除了非主属性对主关键字的传递函数依赖。
   1NF→2NF:消除了非主属性对主关键字的部分函数依赖
[/size]

你可能感兴趣的:(F#)