版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库原理与应用第4章关系数据库理论本章知识导图本章学习目标了解:基础概念与问题熟悉数据冗余与操作异常问题,掌握函数依赖分类及BCNF的定义与适用场景。理解:本质与逻辑深入理解函数依赖本质,厘清1NF到3NF的递进约束逻辑及无损连接的意义。掌握:核心算法求解熟练掌握属性集闭包计算、最小函数依赖集求解及3NF分解的核心算法。应用:分析与设计实践能够依据依赖集分析最高范式、分解模式并验证无损连接性与函数依赖保持性。素养:职业规范意识养成以理论为指导、追求数据低冗余与高一致性的规范数据库设计职业意识。目录01函数依赖问题的提出、定义与分类、候选码、作用02关系模式的范式1NF、2NF、3NF、BCNF规范化标准03函数依赖的公理系统Armstrong公理、属性集闭包、最小依赖集04关系模式的分解无损连接性、函数依赖保持性、分解算法05本章小结4.1函数依赖问题的提出:关系模式存在的异常与冗余核心概念:函数依赖及其分类形式化定义:候选码的理论推导实际应用:函数依赖在数据库设计中的作用4.1.1问题的提出关系模式定义S(属性列表)sno,sname,ssex,sage,sdept,sdormcno,cname,credit,grade
问题分析:该模式混合了学生基本信息与选课信息,可能导致数据冗余与更新异常。关系实例(表4-1)4.1.1问题的提出
–四个问题01.数据冗余度高学生的姓名、性别等信息,以及课程的名称、学分等信息会被重复存储,占用大量空间。02.数据修改复杂修改一个学生的姓名或一门课程的名称,需要更新所有相关的元组,维护成本高且易出错。03.插入异常新生若未选课,或新课程若未被学生选修,则无法将其基本信息插入到数据库中。04.删除异常删除所有选课记录可能导致学生或课程的基本信息被一并删除,造成数据丢失。4.1.1问题的提出-解决方案(分解)学生关系S(sno,sname,ssex,sage,sdept)课程关系C(cno,cname,credit)院系关系D(sdept,sdorm)选课关系SC(sno,cno,grade)分解优势:数据冗余大幅降低,有效解决插入/删除异常,简化数据修改操作。4.1.2函数依赖及其分类-函数依赖的定义形式化定义设R(U)是属性集U上的关系模式,X和Y是U的子集。若对于R的任意一个关系r,r中任意两个元组s和t,只要满足s[X]=t[X],就有s[Y]=t[Y],则称X函数决定Y,记为X→Y。核心本质属性间的“一一对应”约束。给定X的取值,Y的取值被唯一确定,不存在一对多的情况。简化表示关系模式通常表示为:R<U,F>其中F是该关系模式上的函数依赖集。4.1.2函数依赖及其分类–案例学生基本信息依赖sno→sname(姓名)sno→ssex(性别)sno→sage(年龄)sno→sdept(院系)sdept→sdorm(宿舍区)课程信息依赖cno→cname(课程名)cno→credit(学分)成绩信息依赖(sno,cno)→grade(成绩)联合主键决定成绩4.1.2函数依赖及其分类-平凡与非平凡依赖平凡函数依赖定义特征若Y⊆X,则X→Y恒成立。即被决定属性集是决定属性集的子集。典型示例(sno,cno)→sno实际意义未揭示属性间的新关联,对数据库设计通常无实际分析价值。非平凡函数依赖定义特征若Y⊈X,且X→Y成立。即被决定属性集不完全包含在决定属性集中。典型示例sno→sname实际意义涉及不同属性间的决定关系,是分析关系模式规范化问题的核心。4.1.2函数依赖及其分类-完全与部分依赖完全函数依赖定义与记法若X→Y,且X的任何真子集X'都不能决定Y,则Y完全依赖于X,记为X→Y。核心本质决定因素X中的每一个属性都是必要的,无冗余。典型示例(学号,课程号)→成绩解释:少了学号或课程号任何一个,都无法确定成绩。部分函数依赖定义与记法若X→Y,且存在X的真子集X'能决定Y,则Y部分依赖于X,记为X
→
Y。核心本质决定因素X中存在多余属性。典型示例(学号,课程号)→姓名解释:其实只需要学号就能确定姓名,课程号在这里是多余的。ffpp4.1.2函数依赖及其分类-部分函数依赖的问题学生关系S中的依赖关系(sno,cno)→sname(姓名)(sno,cno)→ssex(性别)(sno,cno)→sage(年龄)(sno,cno)→sdept(系别)(sno,cno)→cname(课程名)(sno,cno)→credit(学分)部分函数依赖的危害数据冗余同一学生的信息或同一课程的信息被重复存储多次。修改复杂更新数据时,需要修改所有重复存储的副本,容易导致数据不一致。4.1.2函数依赖及其分类-传递函数依赖形式化定义若X→Y,Y→Z(二者均为非平凡函数依赖),且Y↛X,则称Z传递函数依赖于X,记为X→Z。关键约束条件核心条件是Y不能函数决定X。若Y→X,则X↔Y,此时Z变为直接依赖于X,而非传递依赖。核心本质属性Z并非直接依赖于X,而是通过中间属性Y建立的一种间接决定关系。t4.1.2函数依赖及其分类-传递函数依赖的问题关系模式推导示例(学生关系S)已知依赖关系:学号(sno)→院系(sdept)院系(sdept)→宿舍区(sdorm)
推导结论:由于sdept↛sno,因此存在传递依赖:sno⟶sdorm(传递)传递依赖的危害:更新异常修改复杂若某院系宿舍调整,需遍历修改该院系所有学生的sdorm字段,维护成本高。
数据丢失若某院系学生全部毕业或转专业,该院系的宿舍区信息将从数据库中丢失。t4.1.3候选码的形式定义形式定义设有关系模式R<U,F>,X是U的子集。若X→U(完全函数依赖),则称X为R的候选码。关键特征(KeyCharacteristics)唯一性:能唯一确定关系中的一个元组最小性:X中没有多余属性(完全函数依赖保证)多样性:一个关系模式可以有多个候选码引申概念:主码·全码·主属性·非主属性4.1.4函数依赖的作用解释问题根源部分依赖和传递依赖是导致数据冗余、修改复杂、插入异常和删除异常的根本原因。指导模式优化范式(如2NF、3NF)的本质就是通过消除不良的函数依赖来优化关系模式,提升数据库设计的质量。确保分解正确性在关系模式分解时,需基于函数依赖判断分解是否满足“无损连接”和“保持函数依赖”两个关键条件。4.2关系模式的范式第1范式·第2范式·第3范式·BC范式4.2.1第1范式(1NF)核心定义若关系模式R中的每个属性都是不可再分的最小数据单位,则称R满足第1范式,记为R∈1NF。满足条件不存在复合属性(属性值不可再分)不存在重复元组存在局限仅解决了属性不可再分的问题,未涉及函数依赖的优化,仍可能存在严重的数据冗余和异常。(本章第一节给出的关系模式即满足1NF)4.2.2第2范式(2NF)定义与概念若关系模式R满足1NF,且每一个非主属性都完全函数依赖于R的任一候选码,则称R满足第2范式。
核心特征:非主属性必须完全依赖于整个候选码。核心目标消除非主属性对候选码的部分函数依赖。
解决问题:避免数据冗余和更新异常,确保依赖关系的完整性。规范化方法通过分解关系模式,将部分依赖的非主属性与对应的决定因素分离,组成新的关系模式。4.2.2第2范式(2NF)-案例学生关系S满足1NF,判断其是否满足2NF。若不满足2NF,应该如何分解?1、已知关系S的候选码是(sno,cno),则主属性为sno和cno,非主属性包括sname,ssex,sage,sdept,sdorm,cname,credit,grade。结论:S、C和SC三个关系模式中均不存在非主属性对候选码的部分依赖,满足2NF。2、学生关系S中存在以下部分函数依赖。(sno,cno)
sname,(sno,cno)
ssex,(sno,cno)
sage,(sno,cno)
sdept,(sno,cno)
cname,(sno,cno)
credit。因此,学生关系S不满足2NF。3、将部分函数依赖的非主属性与对应的决定因素组成新关系可得如下关系模式。
新的学生关系S(sno,sname,ssex,sage,sdept,sdorm)
候选码为sno
课程关系C(cno,cname,credit)
候选码为cno
选课关系SC(sno,cno,grade)
候选码为(sno,cno)4.2.3第3范式(3NF)定义与判定若关系模式R满足2NF,且R中的每一个非主属性都不传递函数依赖于R的任一候选码,则称R满足第3范式(R∈3NF)。核心目标消除非主属性对候选码的传递函数依赖,确保数据结构的直接性与独立性。规范化方法分解关系模式,将传递依赖的非主属性与对应的中间决定因素分离,组成新的独立关系。4.2.3第3范式(3NF)-案例学生关系S(sno,sname,ssex,sage,sdept,sdorm)存在的问题及解决方案1、存在的问题:由于sdorm传递函数依赖于sno,同一院系的多名学生的sdorm重复存储,这是不必要的数据冗余;当某院系的学生宿舍发生变化时,需要修改该院系所有学生的sdorm字段,修改复杂;若某个院系的学生全部转专业了,会导致该院系的信息从数据库消失。2、可见关系S仍然不“完美”,且不满足3NF。3、依据传递函数依赖对关系S进行分解得到院系关系D(sdept,sdorm)和新学生关系S(sno,sname,ssex,sage,sdept)。此时关系D和关系S均满足3NF。4.2.3第3范式(3NF)-不足之处3NF仍然可能存在问题假设:每一学生可选修多门课程,一门课程可由多个学生选修,每一课程可有多个教师任教,但每个教师只能承担一门课程。判断下列给出的关系SCT(S#,CNAME,TNAME)
最高属于第几范式?并分析该模式存在的问题。
S#CNAMETNAMEs1
英语
王平s1
数学
刘红s2
物理
高志强s2
英语
陈进s3
英语
王平
关系SCT的侯选码:(S#,CNAME)和(S#,TNAME)非主属性:无(SCT至少是一个3NF关系)
结论:若关系R的所有属性都是主属性,则R必定是3NF。在关系SCT中还存在以下问题。插入异常。例如,一个新课程和任课教师的数据,在没有学生选课时不能插入数据库。删除异常。例如,删除某门课的所有选课记录,会丢失课程与教师的数据。4.2.4BC范式(BCNF)核心定义若关系模式R∈1NF,且对于R的每一个函数依赖X→Y(Y⊈X),X都包含R的一个候选码,则称R满足BC范式,记为R∈BCNF。与3NF的关系BCNF是3NF的改进形式,要求更严格。满足BCNF的关系模式一定满足3NF,但满足3NF的关系模式不一定满足BCNF。核心目标消除任何属性(包括主属性和非主属性)对候选码的部分和传递依赖。适用场景在实际应用中,通常分解到3NF就足够了,BCNF是一个更高的理论目标。4.2.3第3范式(3NF)-案例将SCT(S#,CNAME,TNAME)分解为满足BCNF的关系模式1、因为TNAME→CNAME,其左部未包含该关系的任一侯选码,所以它不满足BCNF。2、SCT可分解为SC(S#,CNMAE)和CT(CNAME,TNAME),它们都满足BCNF。结论:任何的二元关系必定是BCNF。4.3函数依赖的公理系统Armstrong公理•属性集的闭包•最小函数依赖集4.3.1Armstrong公理及其推论公理自反律:如果Y⊆X⊆U,则F逻辑蕴涵X
Y。增广律:如果X
Y被F所逻辑蕴涵,且Z⊆U,则F逻辑蕴涵XZ
YZ。传递律:如果X
Y和Y
Z被F所逻辑蕴涵,则F逻辑蕴涵X
Z。推论合并规则:由X
Y和X
Z,有X
YZ。伪传递规则:由X
Y和WY
Z,有XW
Z。分解规则:由X
Y和Z⊆Y,有X
Z。公理系统的作用根据已有的函数依赖推导出新的函数依赖。定义与构成定义4.8:由函数依赖集F所逻辑蕴涵的函数依赖的全体,记为F。数学表达:F={X→Y|X→Y可由阿氏公理导出}包含F本身的所有函数依赖由F推导出的非平凡函数依赖由F推导出的平凡函数依赖计算困难性与结论依赖数量呈指数级增长属性增多时,衍生出的新依赖会像滚雪球一样迅速膨胀,难以统计。推导过程繁琐且易重复需反复套用规则,且需人工检查是否重复,效率极低。结论:直接计算F+不具有实际操作性。4.3.2函数依赖集的闭包++4.3.3属性集的闭包核心定义设F是属性集U上的函数依赖集,X⊆U。所有用Armstrong公理从F推出的函数依赖X→A中,A的属性集合称为X关于F的闭包,记为X⁺。(在不产生歧义的情况下,F可以省略)计算算法步骤01.初始化:令X⁽⁰⁾=X。02.迭代:寻找F中满足V⊆X⁽ⁱ⁾的依赖V→W,令X⁽ⁱ⁺¹⁾=X⁽ⁱ⁾∪W。(V→W使用后标记为已经使用,后续不再用)03.终止:重复步骤2直到X⁽ⁱ⁺¹⁾=X⁽ⁱ⁾,此时即为X⁺。(可用属性或者可用函数依赖已经用完
无法继续更新)主要作用判断属性集X是否为候选码;判断函数依赖X→Y是否能由F逻辑推出。(这个过程是确定的,比“推公式”更实用)FF4.3.3属性集的闭包–案例1问题背景定义已知关系模式R<U,F>:属性集U={A,B,C,D,E}函数依赖F={AB→C,B→D,C→E,EC→B,AC→B}求解目标:计算属性集AB关于F的闭包,即(AB)计算过程与结果初始化:X(0)={A,B}推导:由AB→C,B→D得X(1)={A,B,C,D}推导:由C→E得X(2)={A,B,C,D,E}终止:X(2)=U,计算结束结果:(AB)
={A,B,C,D,E}结论:AB是R的一个候选码++4.3.3属性集的闭包–案例2问题背景定义已知关系模式R<U,F>:属性集U={A,B,C,D,E,F,G}函数依赖F={A→B,B→C,C→D,AD→E,E→F,F→G,BC→E}求解目标:计算属性集AE关于F的闭包,即(AE)计算过程与结果初始化:X(0)={A,E}推导:由A→B,E→F得X(1)={A,B,E,F}推导:由B→C,F→G得X(2)={A,B,C,E,F,G}推导:由C→D得X(3)={A,B,C,D,E,F,G}结果:(AE)
={A,B,C,D,E,F,G}结论:AE是R的一个候选码+终止:X(3)=U,计算结束+4.3.4函数依赖集的等价–基本概念函数依赖集等价的概念在关系模式设计中,若两个函数依赖集F和G逻辑蕴涵的函数依赖集合完全相同(即F=G),则称它们语义等价。
通俗来说,若从F能推导出的所有依赖都能从G推导出,反之亦然,则F和G表达了相同的语义信息。定义:等价与覆盖设F和G是两个函数依赖集,如果F=G,则称F和G是等价的。
也可称F覆盖G,或G覆盖F。这是判断两个函数依赖集是否等价的数学定义。++++核心判定标准:闭包相等(F=G)要证明两个函数依赖集F和G等价,必须同时满足两个方向的推导关系。这是验证等价性最严谨的数学方法。步骤一:证明F⊆G验证F中的每一个函数依赖都可以由G推导出来。这意味着G的逻辑蕴含能力至少不弱于F。步骤二:证明G⊆F验证G中的每一个函数依赖都可以由F推导出来。这意味着F的逻辑蕴含能力至少不弱于G。4.3.4函数依赖集的等价–证明++方法A→B∈F等价于B⊆A(而不是利用公理及推论来推导!)+F++4.3.4函数依赖集的等价–最小函数依赖集定义4.10:满足以下三个条件的函数依赖集F称为最小函数依赖集(记为Fmin):1.右部单一化F中每一个函数依赖的右部都必须是单个属性。例如:不能出现X→YZ,必须拆分为X→Y和X→Z。2.左部无冗余决定因素X中没有多余属性。即不存在X的真子集X',使得X'→A与X→A等价。例如:若XY→A成立且X→A也成立,则Y是冗余的。3.整体无冗余F中不存在可以被其他依赖推导出来的冗余依赖。即F与F-{X→A}不等价。每个依赖都是必不可少的。核心特征:最小函数依赖集是在保持与原集合等价的前提下,消除了所有形式冗余的“精炼”集合。4.3.4函数依赖集的等价–案例:最小函数依赖集已知条件关系模式R<U,F>,属性集U={A,B,C,D,E},函数依赖集F={A→BC,BC→AD,B→C,C→B,AC→D,ABD→C,D→E}。求解步骤(三步走)1.分解利用分解规则使得F中每一个函数依赖右侧都变为单属性。分解后,F={A
B,A
C,BC
A,BC
D,B
C,C
B,AC
D,ABD
C,D
E}。2.去掉多余函数依赖
4.3.4函数依赖集的等价–案例:最小函数依赖集(续)求解步骤(三步走)2.去掉多余函数依赖
最终结果(最小函数依赖集Fmin)经过以上步骤,与F等价的最小函数依赖集为Fm={A
C,BC
A,B
C,C
B,AC
D,D
E}。3.去掉左侧多余属性(1)检查BC
A:因为B⁺=BC和C⁺=BC,均不包含A,则BC
A的左侧没有多余属性。(2)检查AC
D:因为A⁺=ABC和C⁺=ABC,均不包含D,则AC
D左侧没有多余属性。4.4关系模式的分解无损连接性·函数依赖保持性·分解算法4.4关系模式的分解-等价模式分解等价模式分解的定义将关系模式R<U,F>分解为ρ={R1,R2,...,Rn}。若分解后的模式集合ρ与原模式R能够表示相同的数据信息和数据约束(即信息无损且依赖保持),则称该分解为等价模式分解。案例4.11对比分析已知:R(U,
F),U={Sno,Sname,Cno,Grade},F={Sno→Sname,(Sno,Cno)→Grade}。分解1:ρ1={R1(Sno,Sname),R2(Sno,Cno,Grade)}——保持了所有依赖分解2:ρ2={R1(Sno,Sname),R2(Cno,Grade)}——丢失(Sno,Cno)→Grade依赖结论:分解1是等价的,分解2不等价。模式分解必须保证信息无损且依赖保持。4.4.1无损连接性的概念严格定义设关系模式R<U,F>分解为ρ={R1,R2,...,Rn}。若对R的任何满足F的关系r,都有:r=π(R1)(r)⨯π(R2)(r)⨯...⨯π(Rn)(r)则称分解ρ具有无损连接性。通俗理解将一个大关系分解成若干小关系后,通过自然连接操作,可以精确地还原出分解前的原始关系。这意味着在分解和重构的过程中,没有信息的丢失,也没有产生多余的错误元组。核心价值无损连接性是衡量模式分解是否“好”的重要标准之一。它保证了数据在逻辑上的完整性,确保数据库中的数据在经过规范化处理后,依然能够准确地反映现实世界的信息。4.4.1无损连接性的判定算法(算法4.3)01.初始化表格构造k行n列表格,行对应关系模式Ri,列对应属性Aj。若Aj属于Ui则填aj,否则填bij。02.迭代修改表格检查F中的函数依赖X→Y,对X分量相等的行,将Y分量改为相同值(优先改a,否则改最小行号b)。03.终止条件反复迭代直到某次修改后表格无变化,算法终止。04.判定结果若存在全a行,则分解具有无损连接性;否则,不具有无损连接性。4.4.1无损连接性的判定算法–案例已知条件设有R<U,F>,U={A,B,C,D,E},F={A→B,A→C,BC→A,B→D,D→E,BC→E}。判断ρ={AB,AC,BC,BD,DE}是否为无损分解。算法执行过程1.初始化表格:根据分解方案构造初始判定表2.迭代修改表格子模式ABCDEABa1a2b13b14b15ACa1b22a3b24b25BCb31a2a3b34b35BDb41a2b43a4b45DEb51b52b53a4a5
3.结果判定
a2a3a5a1a4a4a4a5a54.4.2函数依赖保持性基本定义设关系模式R<U,F>分解为ρ。若F的闭包等于分解后各关系模式依赖集投影的并集的闭包,即F+=(∪Fi)+,则称分解ρ保持函数依赖。判定方法检查F中的每一个函数依赖X→Y是否能被分解后的依赖集所蕴涵。即判断Y是否属于X关于(∪Fi)的闭包,确保每个依赖都能被推导。核心作用确保数据库中的数据约束在分解过程中不丢失,维护数据的一致性和完整性,是模式分解的重要衡量标准之一。4.4.3模式分解算法-确定候选码核心作用候选码是关系模式分解的基础,用于唯一确定元组。确定方法通过计算属性集的闭包来推导最小属性集。典型示例关系模式R<U,F>,U={A,B,C,D},F={A→B,B→C,C→D}推导:A+={A,B,C,D},包含所有属性。结论:候选码为{A}确定候选码的标准步骤步骤1:找左部属性找出所有在函数依赖中只出现在左部或两侧均未出现的属性,形成一个属性集,它们一定是候选码的一部分。步骤2:计算属
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年浙江省奉化市高考物理二轮专题测试卷含答案详解(能力提升)
- 2025年江苏省仪征市高考物理三轮冲刺测试卷含答案详解【满分必刷】
- 2026年云南省景洪市高考物理强基计划测试卷及参考答案详解1套
- 2025年湖北省枝江市高考物理一模测试卷附答案详解【达标题】
- 乡镇商业楼购买合同协议
- 大额肉菜购买合同模板
- 2025年吉林省洮南市高考物理周测试卷(典型题)附答案详解
- 为司机购买保险合同模板
- 派出所购买办公用品合同
- 购买未还清贷款车合同
- 2026年人教版四年级数学下册期末测试卷(含答案)
- 2025年东莞市长安镇下属事业单位招聘真题
- 2026年数据知识产权登记保护试点及数据资产入表衔接试题
- 2026年云南省中考语文试卷真题及答案详解(精校打印版)
- 2026-2030中国染发剂行业现状调查与发展前景预测分析研究报告
- 北师大版三年级数学下册期末测试卷(名校版)含答案
- 雨课堂学堂在线学堂云《自然辩证法概论(北京航空航天)》单元测试考核答案
- 2026年安徽省马鞍山社区工作者考试题库及答案
- 腹股沟嵌顿疝的护理
- 樊昌信通信原理第10章-信源编码(7版)课件
- GA/T 1799-2021保安安全检查通用规范
评论
0/150
提交评论