数据库三大范式

    xiaoxiao2025-05-14  16

    数据库设计三大范式

    第一范式:在关系模式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。否则两个关系之间失去联系

    转载请注明原文地址: https://ju.6miu.com/read-1298884.html
    最新回复(0)