120 likes | 272 Views
关系数据理论. 要点. 关系规范化理论研究背景 数据依赖 规范化 (Normalization) 理论 1NF 、 2NF 、 3NF 、 BCNF 、 4NF 等范式 关系模式规范化的必要性及方法. 5.1 问题的提出. 问题提出: 针对一个具体问题,如何构造 合适的 ( 更好的 ) 数据模式,即如何更好地设计数据的逻辑结构? 关系数据理论的研究背景 关系模型建立在严格的数据理论基础上,并可向别的数据模型转换,因此常以关系模型为背景来讨论这个问题. 背景知识. 数据模式 (schema)
E N D
要点 • 关系规范化理论研究背景 • 数据依赖 • 规范化(Normalization)理论 • 1NF、2NF、3NF、BCNF、4NF等范式 • 关系模式规范化的必要性及方法
5.1 问题的提出 • 问题提出: • 针对一个具体问题,如何构造合适的(更好的)数据模式,即如何更好地设计数据的逻辑结构? • 关系数据理论的研究背景 • 关系模型建立在严格的数据理论基础上,并可向别的数据模型转换,因此常以关系模型为背景来讨论这个问题
背景知识 • 数据模式(schema) • 数据库中全体数据的逻辑结构和特征描述,如数据记录的构成,数据间的联系,安全性、完整性要求等。常以某一种数据模型为基础 • 关系模型的形式化定义:R(U,D,dom,F),本章简化为R(U, F) • 关系模型R的一个关系r:U上的一个关系r满足F 一组数据依赖 属性组
一个例子:学生-课程-成绩管理 • 客观存在的事实 • 一个系有若干学生,但一个学生只属于一个系;一个系只有一名负责人;一个学生可以选修多门课程,每门课程有若干学生选修;每个学生学习每一门课程有一个成绩 • 设计如下单个模式 • 属性组U = {学号SNO,系名SDEPT,系负责人MN,课程名CNAME,成绩G} • 数据依赖 • 该模式存在的问题?怎么改善这个模式?
SNO CNAME G MN SDEPT 问题和改进 • 该模式存在的问题 • 插入异常:一个系无学生或未安排课程时,无法存入系与负责人删除异常:删除一个系的所有学生信息时,系与负责人也丢失 • 冗余太大:负责人姓名重复存入 • 更新异常:当某系负责人更换时,须更新该系所有学生信息中的信息,更新不完全时,易造成数据不一致 • 原因:数据依赖存在一些不合适的性质,需寻找更好的模式,如 S(SNO, SDEPT, ) SG(SNO, CNAME, G, ) DEPT(SDEPT, MN, )
5.2 规范化 • 意图 • 讨论一个关系属性间不同的依赖情况 • 讨论如何根据属性间依赖关系来判定关系是否有某些不合适的性质 • 数据依赖概念 • 反映客观世界数据间的相互关联 • 通过一个关系中属性间值的相等与否来体现 • 两种重要的数据依赖 • 函数依赖(Functional Dependency, FD) • 多值依赖(Multivalued Dependency, MVD)
5.2.1 函数依赖 • 定义1 • 设R(U)是属性集U上的关系模式。X,Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X,记作 • 术语和记号 • ,但 ,则称 是非平凡的函数依赖 • ,但 ,则称 是平凡的函数依赖 • 若 ,则X叫做决定因素 • 若 , ,则记作 • 若Y不函数依赖于X,则记作
对函数依赖的说明 • 换句话说:任何时候若某一关系中的两个元组中的X属性组的值相等,则元组中对应的属性组Y的值也相等,类似于函数概念,Y = f(X) • 需要指出的是:关系R中,如果属性组X是一个候选码或码,则属性组Y一定函数依赖于X(这与候选码的定义一致) • 事实上:如果关系R上有函数依赖XY,而属性X不是一个候选码,则R中可能存在一些数据冗余 • 例如:R(Sno, Sdept, MN, Cname, Grade)中有函数依赖Sdept->MN,而Sdept并不是候选码,表中数据有大量冗余出现
F P 函数依赖 • 定义2 • 在R(U)中,如果 ,并且对于X的任何一个真子集X’, 都有 ,则称Y对X完全函数依赖,记作 • 若 ,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作 • 定义3 • 在R(U)中,如果 ,( ) , , , • 则称Z对X传递函数依赖,记作 传递
F 5.2.2 码 用函数依赖的概念来定义码 • 定义4 • 设K为R(U,F)中的属性或属性组合,若 则K为R的候选码(Candidate Key)。 • 若候选码多于一个,则选定其中的一个为主码(Primary Key) • 相关术语 • 包含在任何一个候选码中的属性,叫做主属性 • 不包含在任何码中的属性,叫做非主属性 • 整个属性组是码,称为全码
码 • 定义5 • 关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外部码(Foreign Key),也称为外码 ★ 主码与外码提供了一个表示关系间联系的手段 SC(Sno,Cno,Grade) Studen(Sno,Sname,….) Course(Cno, Cname,….)