数据库三大范式

来源:互联网 发布:淘宝网折800女鞋 编辑:程序博客网 时间:2024/05/18 03:13

数据库设计三大范式

第一范式:在关系模式R的每个关系r中,如果每个属性值都是不可再分的原子值,那么称R满足第一范式。
也就是说每一列均不可再分
1NF是关系模式应具备的最起码的条件

第二范式:如果关系模式R满足1NF,且每个非主属性完全函数依赖于候选键,那么称R满足2NF。
(目的是消除部分函数依赖),,简单的说就是 如果一个表是复合主键,其他非主键字段完全函数依赖于复合主键,才称其满足2NF。
举个例子:
设关系模式R(S#,C#,GRADE,TANME,TADDRE)的属性分别为学生学号,选修课编号,成绩,任课老师姓名和地址。(S# 和 C#)是R 的候选键。那么(S#,C#)->(TNAME,TADDR)和
C#->(TNAME,TADDR)。此时 如果有一门课程选修人数为100,表中教师姓名和地址就会重复100次。

第三范式:如果关系模式R是1NF,且每个非主属性都不传递依赖于R的候选键,那么称R满足3NF。
(目的是消除传递依赖)
例—-S1(SNO,SNAME,DNO, DNAME, LOCATION)

      学号 姓名   所在系 系名称 系地址

关键字SNO决定各个属性。由于是单个关键字,没有部分依赖的问题,肯定是2NF。但这关系肯定有大量的冗余,有关学生所在的几个属性DNO,DNAME,LOCATION将重复存储,插入,删除和修改时也将产生类似以上例的情况。
原因:关系中存在传递依赖造成的。即SNO 1->1 DNO。 而DNO 1->n SNO却不存在,而DNO -> LOCATION存在, 因此关键辽 SNO 对 LOCATION 函数决定是通过传递依赖 SNO -> LOCATION 实现的。也就是说,SNO不直接决定非主属性LOCATION。
解决目地:每个关系模式中不能留有传递依赖。
解决方法:分为两个关系 S(SNO,SNAME,DNO),D(DNO,DNAME,LOCATION)
注意:关系S中不能没有外关键字DNO。否则两个关系之间失去联系

0 0
原创粉丝点击