第六章 函数依赖
- 格式:doc
- 大小:120.00 KB
- 文档页数:2
函数依赖闭包⼀、函数依赖的逻辑蕴涵定义:设有关系模式R(U)及其函数依赖集F,如果对于R的任⼀个满⾜F的关系r函数依赖X→Y都成⽴,则称F逻辑蕴涵X→Y,或称X→Y可以由F推出。
例:关系模式 R=(A,B,C),函数依赖集F={A→B,B→C}, F逻辑蕴涵A→C。
证:设u,v为r中任意两个元组:若A→C不成⽴,则有u[A]=v[A],⽽u[C]≠v[C]⽽且A→B, B→C,知u[A]=v[A], u[B]=v[B], u[C]=v[C],即若u[A]=v[A]则u[C]=v[C],和假设⽭盾。
故F逻辑蕴涵A→C。
满⾜F依赖集的所有元组都函数依赖X→Y(X→Y不属于F集),则称F逻辑蕴涵X→Y(X→Y由F依赖集中所有依赖关系推断⽽出)⼆、Armstrong公理1、定理:若U为关系模式R的属性全集,F为U上的⼀组函数依赖,设X、Y、Z、W均为R的⼦集,对R(U,F)有:F1(⾃反性):若X≥Y(表X包含Y),则X→Y为F所蕴涵;(F1':X→X)F2(增⼴性): 若X→Y为F所蕴涵,则XZ→YZ为F所蕴涵;(F2':XZ→Y)F3(传递性): 若X→Y,Y→Z为F所蕴涵,则X→Z为F所蕴涵;F4(伪增性):若X→Y,W≥Z(表W包含Z)为F所蕴涵,则XW→YZ为F所蕴涵;F5(伪传性): 若X→Y,YW→Z为F所蕴涵, 则XW→Z为F所蕴涵;F6(合成性): 若X→Y,X→Z为F所蕴涵,则X→YZ为F所蕴涵;F7(分解性): 若X→Y,Z≤Y (表Z包含于Y)为F所蕴涵,则X→Z为F所蕴涵。
函数依赖推理规则F1∽F7都是正确的。
2、Armstrong公理:推理规则F1、F2、F3合称Armstrong公理;F4 ∽ F7可由F1、F2、F3推得,是Armstrong公理的推论部分。
三、函数依赖的闭包定义:若F为关系模式R(U)的函数依赖集,我们把F以及所有被F逻辑蕴涵的函数依赖的集合称为F的闭包,记为F+。
第六章关系的规范化设计第六章关系的规范化设计第一节问题的提出第二节函数依赖第三节范式第四节数据依赖的公理系统第一节关系模式设计问题的提出如何设计一个合理的关系数据库模式?c3c2c1c3c1cno 77OS丁惠s283DS 丁惠s290DB 丁惠s287OS 李立s178DB 李立s1gradecname sname sno 泛关系模式泛关系:泛关系模式中存在的问题c3c2c1c3c1cno 77OS丁惠s283DS 丁惠s290DB 丁惠s287OS 李立s178DB 李立s1gradecname sname sno反映现实世界操作性能例:设计教学管理关系数据库模型sc问题分析Sno Cno Tno Sname Grade Cname Tname S1C1T1赵民90OS彭S1C2T2赵民90DS杨S1C3T3赵民85C++刘S1C4T4赵民87DB张S2C1T4李军90OS张S3C1T4陈江75OS张S3C2T2陈江70DS杨S3C4T4陈江56DB张S4C1T1魏致90OS彭S4C2T2魏致85DS杨S5C1T1乔远95OS彭S5C4T4乔远80DB张关系SCT产生问题的原因?解:sct(sno, cno, tno, sname, grade, cname, tname)属性间约束关系(即数据间的依赖关系)太强解一:(sno,(cno,tno,(tno,cno, tname (sno,cno,解二:(sno,(cno,(tno, tname (sno,cno,(tno,cno)分解关系解决问题的方法:例sc解(sno, cno, tno, sname, grade, cname, tnameS n o S n a m e S 1赵民S 2李军S 3陈江S 4魏致S 5乔远StudentsCno Cname C1OS C2DS C3C++C4DBCoursesSnoCno Grade S1C190S1C290S1C385S1C487S2C190S3C175S3C270S3C456S4C190S4C285S5C195S5C480scTno Tname T1 彭 T2 杨 T3 刘 T4 张TeachersTeachCno Tno C1T1C1T4C2T2C3T3C4T4本章要解决的主要问题理想第二节:函数依赖数据依赖函数依赖(1)、函数依赖定义X 函数决定Y Y函数依赖于XX Y例:只能根据语义来确定函数依赖性的存在与否。
函数依赖(理论及举例)教你如何理解函数依赖一、函数依赖的概念函数依赖:函数依赖就是讨论一个数据表(关系)中属性值之间所存在的函数关系。
函数是一种数学中的概念,被引入到数据库中对数据的联系进行分析。
在一个关系中,属性相当于数学上的变量,属性的域相当于变量的取值范围,属性在一个元组上的取值相当于属性变量的当前值。
例如:在下面的这个职工关系中,职工号、姓名、性别、年龄、职务等属性都相当于变量;职工号属性的域,即四位十进制数字,就是取值范围,性别属性的域:{男、女},就是性别属性的取值范围。
此关系中包含有6个元组,如第2个元组为{3051、刘平、男、48、副处},其中的每个属性值都是对应属性在该元组上的当前值。
单值函数和多值函数:元组中一个属性或一些属性值对另一个属性值的影响相当于自变量值对函数值的影响。
当给定一个自变量值能求出唯一的一个函数值时,称此为单值函数或单映射函数,否则为多值函数。
在单值函数中由自变量的一个值确定函数的一个值,但不同的自变量值允许具有相同的函数值。
如f(x)=2x, f(n)=(-1)^n, f(x)=x^3+1等都是单值函数,由自变量x或n的值能够唯一确定f(x)或f(n)的值。
属性的单值函数决定(依赖):在一个关系中,若一个或一组属性的值对另一个或一组属性值起到决定性的作用,则称为单值函数决定(依赖)。
如上表中职工号的值就能够函数决定其余每个属性的值,也就是说,当职工号给定后,其他每个属性的值就跟着唯一地确定了。
如假定职工号为3074,则他的姓名必定是王海,性别必定为男,年龄必定为32岁,职务必定为正科。
这就叫做职工号能够分别单值函数决定姓名、性别和年龄属性,反过来,可以说姓名、性别和年龄等属性单值函数依赖于职工号属性。
二、函数依赖的定义定义:设一个关系为R(U),X和Y为属性集U上的子集,若对于X上的每个值都有Y上的一个唯一值与之对应,则称X和Y具有函数依赖关系,并称X 函数决定Y,或称Y函数依赖于X,记作X→Y,称X为决定因素。
函数依赖及范式函数依赖基本概念:•函数依赖:FD(function dependency),设有关系模式R(U),X,Y是U的子集,r 是R的任一具体关系,如果对r的任意两个元组t1,t2,由t1[X]=t2[X]导致t1[Y]=t2[Y], 则称X 函数决定Y,或Y函数依赖于X,记为X→Y。
X→Y为模式R的一个函数依赖。
•部分函数依赖:即局部依赖,对于一个函数依赖W→A,如果存在X W(X包含于W)有X→A成立,那么称W→A是局部依赖,否则称W→A为完全函数依赖。
•传递依赖:在关系模式中,如果Y→X,X→A,且X Y(X不决定Y),A X(A不属于X),那么称Y→A是传递依赖。
•函数依赖集F的闭包F+: 被逻辑蕴涵的函数依赖的全体构成的集合,称为F的闭包(clo sure),记为F+。
•最小依赖集:如果函数集合F满足以下三个条件(1)F中每个函数依赖的右部都是单属性;(2) F中的任一函数依赖X→A,其F-{X→A}与F是不等价的;(3)F中的任一函数依赖X→A,Z为X的子集,(F-{X→A})∪{Z→A}与F不等价。
则称F为最小函数依赖集合,记为Fmin。
函数依赖的公理系统:设有关系模式R(U),X,Y,Z,W均是U的子集,F是R上只涉及到U中属性的函数依赖集,推理规则如下:•自反律:如果Y X U,则X→Y在R上成立。
•增广律:如果X→Y为F所蕴涵,Z U,则XZ→YZ在R上成立。
(XZ表示X∪Z,下同) •传递律:如果X→Y和Y→Z在R上成立,则X→Z在R上成立。
以上三条为Armstrong公理系统•合并律:如果X→Y和X→Z成立,那么X→YZ成立。
•伪传递律:如果X→Y和WY→Z成立,那么WX→Z成立。
•分解律:如果X→Y和Z Y成立,那么X→Z成立。
这三条为引理注意:•函数依赖推理规则系统(自反律、增广律和传递律)是完备的。
•由自反律所得到的函数依赖均是平凡的函数依赖。
四种范式的含义:•如果某个数据库模式都是第一范式的,则称该数据库模式是属于第一范式的数据库模式。
名词解释函数依赖
函数依赖是关系型数据库中的一个概念,用于描述表中属性之间的相互关系。
具体来说,若在关系模式中存在属性集合X和Y,其中X的取值唯一地决定了Y的取值,那么就称属性集合X函数依赖于属性集合Y,可以表示为X->Y。
其中,X称为函数依赖的左侧(或决定者),Y称为右侧(或被决定者)。
函数依赖是用来描述属性之间的约束条件,它可以帮助我们理解数据之间的关系,并进行数据库设计和规范化。
在数据库设计中,我们希望尽可能地消除冗余数据和数据依赖,而函数依赖可以帮助我们识别哪些属性是冗余的,或者哪些属性的取值可以通过其他属性的取值推导出来。
函数依赖可以用来进行数据库的规范化,即将一个大的关系模式分解成多个具有更小关系的模式,以消除冗余数据和数据依赖。
例如,通过识别主键和函数依赖,我们可以将一个拥有重复数据的关系模式分解成多个无冗余数据的关系模式,提高数据库的性能和可维护性。
总之,函数依赖是描述关系模式中属性之间关系的概念,对于数据库设计和规范化非常重要。
它帮助我们理解数据之间的依赖、冗余以及如何进行数据库的优化。
数据库函数依赖⼀、函数依赖(Functional Dependency)的概念数据依赖的⼀种,它反映属性或属性组之间相依存,互相制约的关系,即反映现实世界的约束关系。
⼆、定义设R(U)是属性U上的⼀个关系模式,X和Y均为U={A1,A2,…,An}的⼦集,r为R的任⼀关系,如果对于r中的任意两个元组u,v,只要有u[X]=v[X],就有u[Y]=v[Y],则称X函数决定Y,或称Y函数依赖于X,记为X→Y。
例:(sno-学⽣ID,tno-教师ID,cno-课程ID,sname-学⽣姓名,tname-教师姓名,cname-课程名称,grade-成绩)1、sno→sname, cno→cname,(sno,cno)→grade √2、sname→sno, tno→cno, sno→tname ×三、函数依赖是语义范畴1、语义:数据所反映的现实世界事物本质联系2、根据语义来确定函数依赖性的存在与否3、函数依赖反映属性之间的⼀般规律,必须在关系模式下的任⼀个关系r中都满⾜约束条件。
四、属性间的联系决定函数依赖关系设X、Y均是U的⼦集1、X和Y间联系是1:1,则X→Y,Y→X。
(相互依赖,可记作X←→Y)2、X和Y间联系是M:1(M),则X→Y。
3、X和Y间联系是M:N(M,N),则X、Y间不存在函数依赖。
五、完全函数依赖和部分函数依赖1、函数依赖分为完全函数依赖和部分函数依赖2、定义:在R(U)中,如果X→Y,并且对于X的任何真⼦集X'都有X'Y',则称Y完全依赖于X,记作X→Y;否则,如果X→Y,且X中存在⼀个真⼦集X',使得X'→Y成⽴,则称Y部分依赖于X。
例:学⽣ID,学⽣姓名,所修课程ID,课程名称,成绩(学⽣ID,所修课程ID)→成绩成绩既不能单独依赖于学⽣ID,也不能单独依赖于所修课程ID,因此成绩完全函数依赖于关键字。
(学⽣ID,所修课程ID)→学⽣姓名学⽣ID→学⽣姓名学⽣姓名可以依赖于关键字的⼀个主属性——学⽣ID,因此学⽣姓名部分函数依赖于(学⽣ID,所修课程ID)。
朱彦荣 20132184 软件工程2
第六章作业
一. 简答题
1.数据依赖的分类?
函数依赖,多值依赖,连接依赖
2.关系模式可能存在的4个问题?
插入异常、删除异常、冗余、更新异常
3.函数依赖的分类?
平凡函数依赖、非平凡函数依赖、完全函数依赖、部分函数依赖、传递函数依赖
4.函数依赖范畴内的4个范式?
第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、BCNF范式
5.3NF关系模式存在异常的可能原因?
仍可能出现插入异常、删除异常、冗余和更新异常。
原因是:还可能存在主属性部分函数依赖于键。
6.关系模式规范化的方法?
首先要保证属性的原子性,即至少为1NF,然后由1NF到2NF是消除非主属性对键的部分函数依赖,2NF到3NF是消除非主属性对键的传递函数依赖。
3NF到BCNF是消除主属性对键的部分函数依赖和传递函数依赖,一般来说到这里就可以了。
然后,有BCNF范式到4NF范式消除非平凡且非函数依赖的多值依赖,最后由4NF到5NF是消除不是候选键所蕴含的连接依赖。
7.如果X和Y之间是1:n的联系,则X和Y之间的函数关系是谁决定谁?如果是1:1和
m:n呢?
若X:Y=1:N,则N方决定1方,即Y->X
若X:Y=1:1,则X->Y且Y->X,即X<->Y,X和Y等价
若X:Y=M:N,则不能相互决定
二.设有关系模式:R(Sid,Sname,Cid,Cname,Score,Tid),其中:Sid、Sname、Cid、Cname、Score、Tid分别表示学号、学生姓名、课程编号、课程名、成绩、教师编号,并有如下语义要求:
●课程与教师间的联系为1:1;
●学生与课程间的联系为m:n;
●一名学生只能有一个学号,且学号唯一;
●一门课程只能有一个课程号,且课程号唯一。
请完成:
1.将此关系模式反向工程为ERM;
2.根据语义给出R的函数依赖;
R的函数依赖有:
Sid->Sname Cid->Cname
(Sid,Cid)
3.将该关系模式分解成3NF。
分解后的3NF为:
学生(Sid,Sname)
教师(Tid)
课程(Cid,Cname)
选课(Cid,Sid,score)。