武汉大学计算机学院数据库课程组 4.2关系模式的规范化 关系与范式 ■关系的规范化是将一个低级范式的关系模式,通过关系 模式的分解转换为若干个高级范式的过程。 ■关系模式分解的目的:去冗余、满足约束。 ■关系模式的冗余性问题。例RABC),无任何约束可 导致冗余,若规定FDA>B,则冗余可利用FD预测到。 约束条件通过函数的多值依赖和连接依赖及范式完成。 合pp
武汉大学计算机学院数据库课程组 4.2 关系模式的规范化 一、关系与范式 ◼ 关系的规范化是将一个低级范式的关系模式,通过关系 模式的分解转换为若干个高级范式的过程。 ◼ 关系模式分解的目的:去冗余、满足约束。 ◼ 关系模式的冗余性问题。例R(A,B,C),无任何约束可 导致冗余,若规定FD:A->B,则冗余可利用FD预测到。 ◼ 约束条件通过函数的多值依赖和连接依赖及范式完成
武汉大学计算机学院数据库课程组 4.2关系模式的规范化 、第一范式:1NF 定义4.5 若R的每个分量都是不可分的数据项,则R∈1NF。 从型上看:不存在嵌套结构 从值上看,不存在重复组 1NF是关系模式的最低要求 例:学生关系S(S#, SNAME, CLASS,C#, TNAME,TAGE, ADDRESS, GRADE)是1N关系,但它存在数据冗余,插入 异常和删除异常等问题。 合pp
武汉大学计算机学院数据库课程组 4.2 关系模式的规范化 二、第一范式:1NF 定义4.5: 若R的每个分量都是不可分的数据项,则R∈1NF。 从型上看:不存在嵌套结构 从值上看,不存在重复组 1NF是关系模式的最低要求。 ◼ 例:学生关系S(S#,SNAME,CLASS,C#,TNAME,TAGE, ADDRESS,GRADE)是1NF关系,但它存在数据冗余,插入 异常和删除异常等问题
武汉大学计算机学院数据库课程组 4.2关系模式的规范化 、第二范式:2NF 定义4.6若R∈1N,且R中的每一个非主属性都完全函数 依赖于R的任一候选键,则R∈2NF。 ■例:学生关系S(S#, SNAME, CLASS,C#, TNAME,TAGE, ADDRESS, GRADE),判断R是否为2NF? 侯选键为(S#,C#),非主属性有: SNAME, CLASS, TNAME, TAGE, ADDRESS, GRADE (S#,C#)一> SNAME,S#一> SNAME (S#, C#)P>SNAME Sg2NF(每一个非主属性!)
武汉大学计算机学院数据库课程组 4.2 关系模式的规范化 三、第二范式: 2NF 定义4.6 若R∈1NF,且R中的每一个非主属性都完全函数 依赖于R的任一候选键,则R∈2NF。 ◼ 例:学生关系S(S#,SNAME,CLASS,C#,TNAME,TAGE, ADDRESS,GRADE),判断R是否为2NF? ◼ 侯选键为(S#,C#),非主属性有:SNAME,CLASS, TNAME,TAGE,ADDRESS,GRADE (S#,C#)->SNAME, S# -> SNAME (S#,C#) P >SNAME S2NF(每一个非主属性!)
武汉大学计算机学院数据库课程组 4.2关系模式的规范化 分解为2NF的方法:破坏部分依赖的条件。 将满足部分函数依赖和满足完全函数依赖的属性分解 到不同的关系中。 ■对上例,考察非主属性和侯选键之间的函数依赖关系: (S#, C#)P >SNAME, (S#,C#) >CLASS, (S#,C#) > TNAME (S#,C#) StAgE, (S#, C#)P >ADDRESS, (S#,C# >GRADE 区分出完全依赖和部分依赖,若是部分依赖,标记出其 中的主属性。 合pp
武汉大学计算机学院数据库课程组 4.2 关系模式的规范化 ◼ 分解为2NF的方法:破坏部分依赖的条件。 将满足部分函数依赖和满足完全函数依赖的属性分解 到不同的关系中。 ◼ 对上例,考察非主属性和侯选键之间的函数依赖关系: (S#,C#) P >SNAME, (S#,C#) P >CLASS, (S#,C#) P >TNAME, (S#,C#) P >TAGE, (S#,C#) P >ADDRESS, (S#,C#) F >GRADE 区分出完全依赖和部分依赖,若是部分依赖,标记出其 中的主属性
武汉大学计算机学院数据库课程组 42关系模式的规范化 关系S分解为三个关系: ST(S#, SNAME, CLASS)(只依赖S#的属性分解到一个子模 式中) CTA(,TNAE,TAE, ADDRESS)(只依赖C#的属性分解 到另一个子模式中) SC(S#,C, GRADE)(完全函数依赖于候选键的属性分解 到第三个子模式中) 分解后,关系ST、CTA和SC都为2NF 结论1:若关系R的侯选键是单属性的,则R必定是2NF。 合pp
武汉大学计算机学院数据库课程组 4.2 关系模式的规范化 ◼ 关系S分解为三个关系: ST(S#,SNAME,CLASS)(只依赖S#的属性分解到一个子模 式中) CTA(C#,TNAME,TAGE,ADDRESS) (只依赖C#的属性分解 到另一个子模式中) SC(S#,C#,GRADE) (完全函数依赖于候选键的属性分解 到第三个子模式中) 分解后,关系ST、CTA和SC都为2NF。 结论1:若关系R的侯选键是单属性的,则R必定是2NF