第六章关系数据理论 函数依赖
第六章 关系数据理论 函 数 依 赖
设计任何一个数据库应用系统,现实世界→ER模型→关系模型,都 会遇到如何构造合适的数据模式,即逻辑结构的问题; 对于初步的关系模式,可能存在这样或那样的问题(如插入异常、 删除异常等),需要利用关系数据库设计理论进行规范化,以逐步 消除存在的问题,从而得到一定规范程度的关系模式,这就是本章 要讲的内容;
设计任何一个数据库应用系统,现实世界→ E-R模型→关系模型,都 会遇到如何构造合适的数据模式,即逻辑结构的问题; 对于初步的关系模式,可能存在这样或那样的问题(如插入异常、 删除异常等),需要利用关系数据库设计理论进行规范化,以逐步 消除存在的问题,从而得到一定规范程度的关系模式,这就是本章 要讲的内容;
本章是关系模型的理论基础之二,该理论是指导数据库设计的重要依 据。 本章将阐述关系数据库中最深的一些特性——函数依赖、多值依赖和 连接依赖,以及由此引出的诸多异常,如插入异常、更新异常、删除 异常及冗余等,对于出现的问题,通过理论引入,对关系模式的规范 化进行系统阐述
本章是关系模型的理论基础之二,该理论是指导数据库设计的重要依 据。 本章将阐述关系数据库中最深的一些特性——函数依赖、多值依赖和 连接依赖,以及由此引出的诸多异常,如插入异常、更新异常、删除 异常及冗余等,对于出现的问题,通过理论引入,对关系模式的规范 化进行系统阐述
本次课主要内容 口关系模型概念回顾 口关系模式中可能存在的异常 口关系模式中存在异常的原因 口关系模式的规范化
本次课主要内容 关系模型概念回顾 关系模式中可能存在的异常 关系模式中存在异常的原因 关系模式的规范化
概念回顾 关系:描述实体、属性、实体间的联系。从形式上看,它是 张二维表; 关系模式:对关系的描述;关系数据库中,关系模式是型,关 系是值; 关系数据库:基于关系模型的数据库; 关系数据库的模式:对关系数据库的描述,关系数据库的型也 称为关系数据库模式
一、概念回顾 关系:描述实体、属性、实体间的联系。从形式上看,它是一 张二维表; 关系模式:对关系的描述;关系数据库中,关系模式是型,关 系是值; 关系数据库:基于关系模型的数据库; 关系数据库的模式:对关系数据库的描述,关系数据库的型也 称为关系数据库模式
关系模式的形式化定义 关系模式由五部分组成,即它是一个五元组:R(U,D,D0M,F R:关系名; U:组成该关系的属性名集合——组属性U; D:属性组U中属性所来自的域; DOM:属性向域的映象集合 F:属性间数据的依赖关系集合
关系模式的形式化定义 关系模式由五部分组成,即它是一个五元组:R(U, D, DOM, F) R: 关系名; U: 组成该关系的属性名集合—一组属性U; D: 属性组U中属性所来自的域; DOM:属性向域的映象集合 F: 属性间数据的依赖关系集合
二、关系模式中可能存在的异常 例1:建立一个描述学校教务的数据库:学生的学号(Sno)、所在系 ( Sdept)、系主任姓名( Mname)、课程号(Cno)成绩( Grade) 假设用单一的关系模式 Student来表示,则该关系模式的属性集合 U=t Sno, Sdept, Mname, Cname, Grade K 现实世界已知事实的语义: 一个系有若干学生,一个学生只属于一个系; 一个系只有一名系主任; 。—个学生可以选修多门课程,每门课程有多名学生选修; 每个学生所学的每门课程都有一个成绩
二、关系模式中可能存在的异常 例1:建立一个描述学校教务的数据库:学生的学号(Sno)、所在系 (Sdept)、系主任姓名(Mname)、课程号(Cno)成绩(Grade); 假设用单一的关系模式 Student 来表示,则该关系模式的属性集合 U ={ Sno, Sdept, Mname, Cname, Grade } 现实世界已知事实的语义: ◦ 一个系有若干学生, 一个学生只属于一个系; ◦ 一个系只有一名系主任; ◦ 一个学生可以选修多门课程, 每门课程有多名学生选修; ◦ 每个学生所学的每门课程都有一个成绩
Student表 Sno Sdept Mname cno d grade S1 计算机系 张明 C1 95 S1 计算机系 张明 C2 85 S1 计算机系 张明 C3 96 S4 计算机系 张明 C1 73 S5 计算机系 张明 Cl 86
Student表 Sno Sdept Mname cno grade S1 计算机系 张明 C1 95 S1 计算机系 张明 C2 85 S1 计算机系 张明 C3 96 S4 计算机系 张明 C1 73 S5 计算机系 张明 C1 86 … … … … …
数据冗余:如果一个系有多名学生或该学生选修了多门课程,则系 名称和系主任姓名就要出现多次,浪费了存储设备; 操作异常:由于数据的冗余,在对数据操作时会引起各种异常: 插入异常:如果一个系刚成立,无学生,或者虽然有学生但尚未安排 课程,那么就无法把这个系及其负责人的信息加入数据库。一一应该 插入而未被插入 ·删除异常:如果某个系的学生全部毕业了,我们在删除该系学生信息 的同时,把这个系及其系主任的信息也丢掉了。一一不该删除的数据 不得不删 更新异常:如果某系更换系主任或更换系名后,系统必须修改与该 系学生有关的每一个元组;若有一个元组中的数据未更改,就会造 成这个系主任姓名不一致现象
数据冗余:如果一个系有多名学生或该学生选修了多门课程,则系 名称和系主任姓名就要出现多次,浪费了存储设备; 操作异常:由于数据的冗余,在对数据操作时会引起各种异常: 插入异常:如果一个系刚成立,无学生,或者虽然有学生但尚未安排 课程,那么就无法把这个系及其负责人的信息加入数据库。--应该 插入而未被插入 删除异常:如果某个系的学生全部毕业了, 我们在删除该系学生信息 的同时,把这个系及其系主任的信息也丢掉了。--不该删除的数据 不得不删 更新异常:如果某系更换系主任或更换系名后,系统必须修改与该 系学生有关的每一个元组;若有一个元组中的数据未更改,就会造 成这个系主任姓名不一致现象
结论: o Student关系模式不是一个好的模式。 “好”的模式:不会发生插入异常、删除异常、更新异常,数 据冗余应尽可能少。 。如果将关系模式 Student划分为三个关系模式S(Sno, Sdept) Sc(Sno,Cno, Gr ade)Dept( Sdept, Mname)可基本解决以上问题, 但分解后是否是最佳的模式,也不是绝对的
结论: ◦ Student关系模式不是一个好的模式。 ◦ “好”的模式:不会发生插入异常、删除异常、更新异常,数 据冗余应尽可能少。 如果将关系模式Student划分为三个关系模式S(Sno,Sdept ) SC(Sno,Cno,Grade ) Dept(Sdept, Mname ) 可基本解决以上问题, 但分解后是否是最佳的模式,也不是绝对的