200 likes | 332 Views
数据库原理与 SQL Server. 第 6 课 数据库规范化设计 ( 二 ). 第 6 课 数据库规范化设计 —— 数据依赖. 目标: 了解关系模式的规范化问题 掌握函数依赖的相关知识 掌握属性集闭包的计算. 3.3 数据库原理 — 数据库规范化设计. 概念: 对于给定应用环境,构造最优数据库模式 目标:结构合理、使用方便、效率较高的数据库 内容: 3.3.1 数据模型 3.3.2 关系模型规范化问题 3.3.3 函数依赖 3.3.4 属性集闭包 3.3.5 范式. 数据库逻辑结构. 数据依赖. 评价标准. 一、关系模式的规范化问题.
E N D
数据库原理与SQL Server 第6课 数据库规范化设计(二)
第6课 数据库规范化设计——数据依赖 目标: • 了解关系模式的规范化问题 • 掌握函数依赖的相关知识 • 掌握属性集闭包的计算
3.3 数据库原理—数据库规范化设计 概念:对于给定应用环境,构造最优数据库模式 目标:结构合理、使用方便、效率较高的数据库 内容:3.3.1 数据模型 3.3.2 关系模型规范化问题 3.3.3 函数依赖 3.3.4 属性集闭包 3.3.5 范式 数据库逻辑结构 数据依赖 评价标准
一、关系模式的规范化问题 人工管理: 文件系统: 数据库系统: • 数据不能共享,冗余度高 数据可以共享(理论),仍有较高冗余度 数据可以共享,具有可控冗余度 数据管理 数据冗余:同一个数据在系统中多次重复出现 问题:操作异常
关系模式的操作异常 实例 学生选课关系模式R(sno,sname,sex,cno,cname,score)实例 将数据库应用 改为数据结构 数据结构 删除1007 插入新课程 c004 操作系统 修改异常: 插入异常: 删除异常: 数据不一致 操作异常 无法插入 丢失信息
关系模式的规范化 泛关系模式 当R(U)中U包含了现实问题的所有属性,称R(U) 为泛关系(模式) 问题 泛关系模式R(U)通常有数据冗余,需分解为多个模式Ri, 其集合ρ={R1,…,Rk}称为数据库模式ρ 实例 “学生选课”泛关系模式:R(sno,sname,sex,cno,cname,score) 分解为数据库模式: ρ={R1(sno,sname,sex),R2(cno,cname),R3(sno,cno, score)} 符号 A、B、C…表示单属性,U、V、W、X、Y、Z表示属性集 R、S表示关系,R(A,B,C)=R(ABC)=ABC={A,B,C}
二、函数依赖 数据依赖:数据间的联系 函数依赖:属性间的联系,最基本的数据依赖
函数依赖的定义 定义 R(U),X、Y为属性集,t1、t2为元组,若t1[X] =t2[X],则t1[Y]=t2[Y],称X函数决定Y函数 或Y依赖于X,记作X→Y,称函数依赖(FD) 实例 对(sno,sname,sex,cno,cname,score)有FD sno→sname cno→cname sno→sex sno→(sname,sex) (sno,cno)→score
函数依赖实例 实例 R(ABCD),假设A与B为一对多联系,而C与D 为一对一联系,写出相应的FD A与B一对多联系,即每个A值有多个B值对应,有FD: B→A C与D一对一联系,有FD: D→C和C→D 注意 一对多关系的FD为多端决定一端
函数依赖和关键码的关系 定义 R(U),若X→U,则X是R的超键 若X任一子集X1,X1→U不成立,则X是R的候选键 实例 对“学生选课”关系模式R(sno,sname,sex,cno,cname,score) 有FD:(sno,cno)→(sno,sname,sex,cno,cname,score) 即(sno,cno)为关系模式R(U)的超键 由于 sno→(sno,sname,sex,cno,cname,score) 不成立 cno→(sno,sname,sex,cno,cname,score) 即(sno,cno)为关系模式R(U)的候选键 有FD:(sno,sname,cno)→(sno,sname,sex,cno,cname,score) 因有FD:(sno,cno)→(sno,sname,sex,cno,cname,score) 即(sno,sname,cno)只是超键而非候选键
结论 • 若X是R的候选键,则任意Y均有X→Y 如 “学生选课” R(sno,sname,sex,cno,cname,score) 有(sno,cno)→(sno ,sname ,sex ,cno ,cname ,score) • 若X→Y,而X非超键,则R一定有冗余 • 如 “学生选课” R(sno,sname,sex,cno,cname,score) • 有cno→cname,则cno相同时cname必冗余 • 函数依赖表示数据的完整性约束
函数依赖的扩充定义 定义 若X→Y,且Y⊆ X,则称X→Y是“平凡的FD” 反之称“非平凡的FD” 实例 对(sno,sname,sex,cno,cname,score)有FD (sno,sname)→sno sno→sno 平凡的FD sno→sname 非平凡的FD 结论 ● 平凡的FD是不可能不满足的FD ●要研究的是非平凡的FD
三、属性集的闭包 函数依赖集闭包 属性集闭包 关系模式规范化重点
函数依赖集与函数依赖集的闭包 定义 函数依赖的集合,称函数依赖集(F) 由F中所有FD可推导出的所有FD的集合(F+) 实例 R(ABC),F={A→B,B→C},求F+ F+={ φ→φ ,A→φ ,A→A ,A→B ,A→C ,B→…, C→…, AB→φ ,AB→A ,AB→… ,…} 结论 ●F+计算复杂,是指数级计算 ●判断任一FD是否属于F+ 实例 教师认识所有学生
属性集闭包的定义 定义 对F,F+中所有X→A的A的集合称X的闭包(X+) 实例 R(ABC),F={A→B,B→C} 结论 ●X+表示了所有X可以决定的属性 如R(ABC),F={A→B,B→C} ,则A+= A B C 有A+=ABC ,则A→ABC ●若X+包含R所有属性X是超键,当X不可约则是候选键 如R(ABC),F={A→B,B→C} 有A+=ABC,则A为超键 ,因A不可约则A为候选键 ●X→Y属于F+的必充条件是Y是X+的子集 如R(ABC),F={A→B,B→C}, A+=ABC ∈ F+ {A→φ ,A→A ,A→B ,A→C ,A→AB ,A→AC ,A→BC ,A→ABC}
属性集闭包实例 实例 R(ABC),F={A→B,B→C} 求其候选键并判断A→C和B→A是否属于F+ 根据属性集闭包的定义: A+=ABC ,B+=BC ,C+=C 由于A+包含R所有属性且A不可约,则A为候选键 由于C∈A+ ,则A→C∈F+ 由于A∉B+ ,则B→A∉F+ 结论 ●不求F+判断FD是否属于F+ ●求候选键 求属性集的闭包
属性集闭包算法 算法F为R(U) 的FD集,A(A∈U)的闭包算法 ① 将A置入A+ ② 对F每一FD,若左部所有属性属于A+,则将 右部所有属性置入A+ ③ 重复第二步至A+封闭 算法F为R(U) 的FD集,X (X∈U) 的闭包算法 ① 求X中每个单属性的闭包 ② 若F中无左部为X的FD,则X+为X中各属性闭 包的并集,否则将A扩展为X重新计算
属性集闭包算法实例(一) 实例 R(ABCD),F={A→B,B→C,D→B},求候选键 (1)求A+ ① A+=A ② 由A→B,而A∈A+,则A+=AB ③ 由B→C,而B∈A+,则A+=ABC ④ A+封闭,即A+=ABC (2)求B+、C+、D+ 按步骤(1)可得:B+=BC,C+=C,D+=BCD (3)求其候选键 所有FD左部为单属性,属性集闭包为单属性闭包的并 (AD)+=ABCD,且AD不可约 R候选键为AD
属性集闭包算法实例(二) 实例 R(ABC),F={A→BC,BC→A},求候选键 ① 求属性闭包 A+= ABC,B+= B,C+= C ② 求属性集闭包 由BC→A,则(BC)+= ABC 其余属性集闭包为属性闭包的并 ③ 求候选键 A+=ABC,(BC)+=ABC,且A、BC不可约 R候选键为A和BC
作业 第三章 习题 2、10、11、12、13、14