最小函数依赖集的求法

合集下载

闭包最小依赖集

闭包最小依赖集

例1:有关系模式R(A,B,C,D),其上的函数依赖集: F= {A→ C , C → A, B → AC, D → AC } (1) 计算(AD)+ (2) 求F的最小等价依赖集Fm。 (AD)+=ACD Fm={ A → C, C → A, B → A ,D → A } 不唯一
例2: 有关系模式R(A,B,C,D,E,F)满足下列函数依赖: AB→ C BC → D BE → C CF → BD C→A ACD → B CE → FA D → EF
3、快速求解侯选关键字的方法 将关系模式R的属性分四类: (1)仅出现在F的函数依赖左部的属性为L类 (2)仅出现在F的函数依赖右部的属性为R类 (3)在F的函数依赖左右两边均未出现的属性为N类 (4)在F的函数依赖左右两边均出现的属性为LR类 结论1: L类、N类属性必是主属性,R类属性一定不是主属性 2: 如果X是有N类和L类组成的属性集,如果X+的包含了 R的全部属性,则X是R的唯一侯选关键字。
1、函数依赖集的等价 设F和G是两个函数依赖集,如果F数依赖集的最小集 对于给定的一个函数依赖集F,当满足下列条件时称为F的 最小集,记为F’。 (1) F’的每个依赖的右部都是单个属性; (2) 对于F’的任一函数依赖X→ A来说, (F’ - {X → A}) 与F’都不等价; (3) 对于F’的任一函数依赖X→ A来说, (F’ - {X → A}) ∪(Z → A)与F’都不等价, 其中Z为X的任一子集; 注:函数依赖集的最小集不唯一
第五章作业: 第五章作业: 1、有关系模式R(A,B,C,D,E),其上的函数依赖集: F={A → BC, CD → E, B → D, E → A} (1) 计算B+ (2) 求出R的所有侯选关键字 2、设有关系模式R(U,F),其中: U={E,F,G,H} F={E → G, G → E,F → EG,H → EG,FH → E} 求F的最小依赖集。 3、设有关系模式R(U,F),其中: U={A,B,C,D} F={A → B, B → C, D → B} (1)如果把R分解成{ACD,BD},求F在这两个模式上的投影。 (2)ACD和BD是BCNF吗?如果不是,请进一步分解。

数据库系统概论候选码的求解方法

数据库系统概论候选码的求解方法
2 ST +没有包含CSZ的所有属性,所以ST不是唯一候选码,
3 ST,ZIP +包含CSZ的所有属性,所以 ST,ZIP 是一个 候选 码,
4 ST,CITY +也包含CSZ的所有属性,所以 ST,CITY 是一个 候选码,
例:设有关系模式R A,B,C,D,E ,其函数依赖集 F=A→BC,CD→E,B→D,E→A,求R的所有候选码, 解: 1 Fm=A→B, A→C,CD→E,B→D,E→A 2 A,B,C,D,E五个属性在F中各个函数依赖的右边和左边都出现 了,所以候选码中可能包含A,B,C,D,E,
候选码为:SI,SB,SQ,SO
Add the author and the accompanying title
生活
图标元素
商务
图标元素
商务
图标元素
商务
图标元素
商务
图标元素
3 在F2中去掉多余的依赖, 对于CD→B,在剩下的函数依赖中,由于 CD +=CDAEGB,所以CD→B是多余 的,则Fm=AB→C,C→A,BC→D,D→E, D→G,BE→C, CG→B ,CG→D,CE→G 或者对于CG→B,由于 CG +=ABCDEG,所以CG→B是多余的,则 Fm=AB→C,C→A,BC→D,CD→B,D→E, D→G,BE→C,CG→D,CE→G
例:设有关系模式R A,B,C,D,E,P ,其函数依赖集 F=A→D,E→D,D→B,BC→D ,DC→A,求R的所有候选码,
解:考察F发现,C、E两属性是L类属性,由上面定理1可知,C、E 必是R的候选码的成员;
P是N类属性,由上面的定理3可知,P也是R的候选码的成员,
又因为 CEP +=ABCDEP,所以CEP必是R的唯一候选码,

最小函数依赖

最小函数依赖

最小函数依赖最小函数依赖(MinimumFunctionalDependencies,MFDs)是数据库理论中最重要的概念之一,它主要用于描述一个表里不同属性间的依赖关系。

换句话说,最小函数依赖能够描述一个表里的属性是如何联系起来的。

最小函数依赖的定义引入了一个表里的任何属性X,其他属性Y的值依赖于X的值,即X->Y。

而且这里的依赖是根据最小原则来定义的,即Y只能有一个属性X。

最小函数依赖的概念在关系数据库设计中起着非常重要的作用,它不仅能帮助我们正确地设计关系型数据库,还能帮助我们确定哪些属性是主键,也能帮助我们更好地理解属性之间的一对多(one-to-many)和多对多(many-to-many)的关系。

首先,最小函数依赖能够帮助我们设计合理的关系型数据库。

通过描述属性之间的依赖关系,我们不但可以把握准确的数据结构,还可以避免出现重复数据,从而大大提高数据库的可维护性。

其次,最小函数依赖也能帮助我们确定主键。

通过MFD的定义,我们可以明确一个表中的属性X能唯一确定其他属性Y,这样X就能作为主键,而Y可以看作其联系属性。

最后,最小函数依赖也能够帮助我们更好地理解属性之间的一对多(one-to-many)和多对多(many-to-many)的关系。

通过MFD的定义,我们可以将复杂的关系简单化,有效地解决类似“一对多”和“多对一”等关系中属性之间的对应问题。

总之,最小函数依赖是数据库理论中最重要的概念之一,它在关系数据库设计中的作用十分重要,能够帮助我们正确地设计关系型数据库,还可以帮助我们确定哪些属性是主键,更好地理解属性之间的一对多(one-to-many)和多对多(many-to-many)的关系。

最小函数依赖的概念和作用不仅仅是非常重要的,它也为数据库设计提供了理论基础,在实际应用中也非常有用。

函数依赖集

函数依赖集

函数依赖集这里,我想从函数依赖性质谈起。

从函数依赖的定义我们可以知道,一个函数在A上有依赖关系的话,那么它在B上也必定有依赖关系,就像两个多面体的棱互相依靠一样。

如果把这种函数依赖的现象叫做函数依赖性质的话,我认为是恰当不过的了。

但我要纠正一下,函数依赖性质并不是说函数具有依赖性质就叫函数依赖性质,函数依赖性质也不能保证函数在其他集合上也存在依赖性质,只能说明函数在A和B上都有依赖关系。

考虑一个由三元组构成的集合,其中每一个元素分别是三个函数的定义域,则该集合是否满足函数依赖呢?我们来看看下面的集合:①=0;② =1;③=2;④=3。

那么,以上四个集合中的函数是否满足函数依赖呢?我们来看看下面的集合:①=1;②=2;③=4;④=5。

那么,以上四个集合中的函数是否满足函数依赖呢?答案肯定是否定的。

因为函数依赖性质并不是说函数在其他集合上也存在依赖性质,而仅仅是说函数在这两个集合上都有依赖性质。

上面两个集合中的函数虽然在第三个集合中满足函数依赖性质,但是却在第二个集合中不满足函数依赖性质。

我认为,函数依赖性质应该指出在这些集合中某个集合中的函数,必须满足这个集合中的函数才能满足函数依赖性质。

也就是说,函数依赖性质是指出在A和B中都有函数依赖关系的时候,一定在A中和B中都存在这个函数依赖关系,并不需要再去说明这个函数在A和B上都有依赖性质。

(1)(3)(一)。

在A中的满足函数依赖性质的数有4个:x=x^3;y=y^3;z=z^3;则它们分别在A的四个象限中。

例:两个函数a、 b,若a可导则b也可导,如果a和b分别可导且分别连续,那么一定也可导,这种函数称为无穷依赖;如果a和b同时可导,则称a和b为无穷连续,如果a和b可导且不连续,那么称a和b为无穷间断。

其实函数依赖的重点不在于有无依赖性,而在于函数在依赖的集合中是否存在。

对于这样的集合,可以用排除法。

可以用函数a-1=1代入集合:(2)(1)。

得到函数y=1^3, x=0;可以用函数b-1=-2代入集合:(3)(1)。

02-6章-习题课-习题

02-6章-习题课-习题

习题课1.设有函数依赖集F = { D→G,C→A,CD→E,A→B},计算闭包D+,(AC)+,(ACD)+。

2.设有关系模式R(U,F),其中:U={A,B,C,D,E},F = { A→BC,CD→E,B→D,E→A}。

求R的所有候选码。

3.设有关系模式R(U,F),其中:U={E,F,G,H},F={E→G,G→E,F→EG,H→EG,FH →E},求F的最小依赖集。

4.设有关系R和函数依赖F:R(W,X,Y,Z),F = { X→Z,WX→Y }。

试求下列问题:(1)关系R属于第几范式?(2)如果关系R不属于BCNF,请将关系R逐步分解为BCNF。

要求:写出分解过程。

候选键:WZ部分函数依赖:Z部分函数依赖于WX存在部分函数依赖,不是2NF,是1NF分解结果为:R1(X,Z)R2(W,X,Y)5.设有关系模式R(U,F),其中U=ABCDE,F = { A→B,BC→E ,ED→AB }。

①计算A F+、(AB)F+、(ABC)F+及(BCD)F+;②求R的所有候选码,并说明理由;③R最高满足第几范式?为什么?④若R不属于BCNF,试改进该关系数据库设计,使它满足BCNF。

6.设有关系模式R(U,F),其中U={A,B,C,D,E},F = { A→D,E→D,D→B,BC→D ,DC→A }。

①计算D F+、(DC)F+、(BC)F+及(CE)F+;②求R的所有候选码,并说明理由;③R最高满足第几范式?为什么?④若R不属于BCNF,试改进该关系数据库设计,使它满足BCNF。

主属性CE;非主属性ABD由于D对于CE的部分函数依赖,只是1NF1)候选键CE,唯一1.最小化函数依赖集1)A F+=A; E F+=E; D F+=D; BC F+=BC; DC F+=BCD(出现在右侧的)2)B F+=B; C F+=C; D F+=BD(未出现在右侧的)F为最小化函数依赖集2.求候选键为CE3.不存在不在F中出现的属性4.不存在函数依赖X→Y,满足XY=U5.按左部相同的原则分组,得到ρ={R1(A,D),R2(E,D),R3(D,B),R4(B,C,D),R5(D,C,A)}6.考虑候选键CE,ρ*=Ρu R6(C,E)7.已知R<U,F>,U={ A,B,C,D,E },F={AB →C, C →D,D →E},R的一个分解ρ={ R1( A,B,C ),R2(C,D),R3(D,E) }判断ρ是否为无损连接?8.设有关系模式R(A,B,C,D),其上的函数依赖集:F={A→C,C→A,B→AC,D→AC}(1)求F的最小等价依赖集F C。

最小函数依赖集Fm的求法

最小函数依赖集Fm的求法

最小函数依赖集Fm的求法:1.根据分解规则,将函数依赖的右端分解成单个属性2.对于F中的每个函数X→A,设G=F-{X→A},如果A∈X G+,则将X→A从中删除,否则保留。

3.对于F中每一个左端包含多个属性的X→A,选择X的每个子集Z,如果A∈Z F+,则用Z→A代替X→A。

例如:F={BE→G,BD→G,CDE→AB,CD→A,CE→G,BC→A,B→D,C→D}求Fm。

解:1)右端分解成单个属性F={BE→G,BD→G,CDE→A, CDE→B,CD→A,CE→G,BC→A,B→D,C →D}2)设G=F-{X→A},如果A∈X G+,则将X→A删除,否则保留(1)G=F-{ BE→G }={BD→G,CDE→A, CDE→B,CD→A,CE→G,BC →A,B→D,C→D},则(BE)G+=BEDG,包含G,则删除。

(2)G=F-{BD→G, }={ CDE→A, CDE→B,CD→A,CE→G,BC→A,B →D,C→D},则(BD)G+=BD,不包含G,则保留。

(3)G=F-{CDE→A}={ BD→G, CDE→B,CD→A,CE→G,BC→A,B →D,C→D},则(CDE)G+= CDEBGA,包含A,则删除。

(4)G=F-{CDE→B}={ BD→G, CD→A,CE→G,BC→A,B→D,C→D},则(CDE)G+= CDEAG,不包含B,则保留。

(4)G=F-{CD→A,}={ BD→G, CDE→B,CE→G,BC→A,B→D,C→D},则(CD)G+= CD,不包含A,则保留。

(5)G=F-{ CE→G,}={ BD→G, CDE→B,CD→A, BC→A,B→D,C →D},则(CE)G+= CEDBAG,包含G,则删除。

(5)G=F-{ BC→A,}={ BD→G, CDE→B,CD→A, B→D,C→D},则(BC)G+= BCDGA,包含A,则删除。

(6)G=F-{ B→D,}={ BD→G, CDE→B,CD→A, C→D},则(B)G+= B,不包含D,则保留。

求最小函数依赖集

求最小函数依赖集

关系模式R(U,F)中,U=ABCDEG,F={B->D,DG->C,BD->E,AG->B,ADG->BC} 求F的最小函数依赖集方法如下:1.根据分解规则,将函数依赖的右端分解成单个属性该题目的话要将:BC分解成单个属性。

F={ADG->B,ADG->C,······}2.对于F中的每个函数X->A,设G=F-{X->A},如果A属于X的闭包,则将X->A从中删除,否则保留。

该题目:1)G=F-{B->D},则B的闭包={B},包不含D,则保留2)G=F-{DG->C},则DG的闭包={DG},不包含C,则保留3)G=F-{BD->E},则BD的闭包={BD},不包含E,则保留4)G=F-{AG->B},则AG的闭包={AG},不包含B,则保留5)G=F-{ADG->B},则ADG的闭包={ADGBCE},包含B,则删除6)G=F-{ADG->C},则ADG的闭包={ADGBCE},包含C,则删除F={B->D,DG->C,BD->E,AG->B}R(U, F),U=ABCDEF, F={AD→E, AC→E, BC→F, BCD→AF, BD→A, AB→F, A→C}求最小函数依赖集答案是:分解右部为属性组的函数依赖,得F={AD→E,AC→E,BC→F,BCD→A,BCD→F,BD→A,AB→F,A→C}对于AD→E,∵(AD)的闭包=ADCE, 又∵E不属于ACDE∴AD→E 冗余对于AC→E,∵(AC)的闭包=AC,又∵E不属于AC,∴AC→E不冗余对于BC→F,∵(BC)的闭包=BC,又∵F不属于BC,∴BC→F 不冗余对于BCD→A,∵(BCD)的闭包=ABCDEF,又∵A不属于ABCDEF ∴BCD→A 冗余对于BCD→F,∵(BCD)的闭包=ABCDEF,又∵F不属于ABCDEF ∴BCD→F 冗余对于BD→A,∵(BD)的闭包=BD,又∵A不属于BD,∴BD→A 不冗余对于AB→F,∵(AB)的闭包=ABCDEF,又∵F属于ABCDEF ∵AB→F 冗余对于A→C,∵A的闭包=A,又∵C不属于A,∴A→C 不冗余∴F的最小函数依赖集为{AC→E,BC→F,BD→A,A→C}。

函数依赖(理论及举例)

函数依赖(理论及举例)

函数依赖(理论及举例)教你如何理解函数依赖一、函数依赖的概念函数依赖:函数依赖就是讨论一个数据表(关系)中属性值之间所存在的函数关系。

函数是一种数学中的概念,被引入到数据库中对数据的联系进行分析。

在一个关系中,属性相当于数学上的变量,属性的域相当于变量的取值范围,属性在一个元组上的取值相当于属性变量的当前值。

例如:在下面的这个职工关系中,职工号、姓名、性别、年龄、职务等属性都相当于变量;职工号属性的域,即四位十进制数字,就是取值范围,性别属性的域:{男、女},就是性别属性的取值范围。

此关系中包含有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为决定因素。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、等价和覆盖
定义:关系模式R<U,F>上的两个依赖集F和G,如果F+=G+,则称F和G是等价的,记做F≡G。

若F≡G,则称G是F的一个覆盖,反之亦然。

两个等价的函数依赖集在表达能力上是完全相同的。

二、最小函数依赖集
定义:如果函数依赖集F满足下列条件,则称F为最小函数依赖集或最小覆盖。

① F中的任何一个函数依赖的右部仅含有一个属性;
② F中不存在这样一个函数依赖X→A,使得F与F-{X→A}等价;
③ F中不存在这样一个函数依赖X→A,X有真子集Z使得F-{X→A}∪{Z→A}与F等价。

算法:计算最小函数依赖集。

输入一个函数依赖集
输出 F的一个等价的最小函数依赖集G
步骤:① 用分解的法则,使F中的任何一个函数依赖的右部仅含有一个属性;
② 去掉多余的函数依赖:从第一个函数依赖X→Y开始将其从F中去掉,然后在剩下的函数依赖中求X的闭包X+,看X+是否包含Y,若是,则去掉X→Y;否则不能去掉,依次做下去。

直到找不到冗余的函数依赖;
③ 去掉各依赖左部多余的属性。

一个一个地检查函数依赖左部非单个属性的依赖。

例如XY→A,若要判Y为多余的,则以X→A代替XY→A是否等价?若A (X)+,则Y是多余属性,可以去掉。

举例:已知关系模式R<U,F>,U={A,B,C,D,E,G},
F={AB→C,D→EG,C→A,BE→C,BC→D,CG→BD,ACD→B,CE→AG},求F的最小函数依赖集。

解1:利用算法求解,使得其满足三个条件
① 利用分解规则,将所有的函数依赖变成右边都是单个属性的函数依赖,得F为:
F={AB→C,D→E,D→G,C→A,BE→C,BC→D,CG→B,CG→D,ACD→B,CE→A,CE→G}
② 去掉F中多余的函数依赖
A.设AB→C为冗余的函数依赖,则去掉AB→C,得:
F1={D→E,D→G,C→A,BE→C,BC→D,CG→B,CG→D,ACD→B,CE→A,CE→G}
计算(AB)F1+:设X(0)=AB
计算X(1):扫描F1中各个函数依赖,找到左部为AB或AB子集的函数依赖,因为找不到这样的函数依赖。

故有X(1)=X(0)=AB,算法终止。

(AB)F1+= AB不包含C,故AB→C不是冗余的函数依赖,不能从F1中去掉。

B.设CG→B为冗余的函数依赖,则去掉CG→B,得:
F2={AB→C,D→E,D→G,C→A,BE→C,BC→D,CG→D,ACD→B,CE→A,CE→G}
计算(CG)F2+:设X(0)=CG
计算X(1):扫描F2中的各个函数依赖,找到左部为CG或CG子集的函数依赖,得到一个C→A函数依赖。

故有X(1)=X(0)∪A=CGA=ACG。

计算X(2):扫描F2中的各个函数依赖,找到左部为ACG或ACG子集的函数依赖,得到一个CG→D函数依赖。

故有X(2)=X(1)∪D=ACDG。

计算X(3):扫描F2中的各个函数依赖,找到左部为ACDG或ACDG子集的函数依赖,得到两个ACD→B和D→E函数依赖。

故有X(3)=X(2)∪BE=ABCDEG,因为X(3)=U,算法终止。

(CG)F2+=ABCDEG包含B,故CG→B是冗余的函数依赖,从F2中去掉。

C.设CG→D为冗余的函数依赖,则去掉CG→D,得:
F3={AB→C,D→E,D→G,C→A,BE→C,BC→D,ACD→B,CE→A,CE→G}
计算(CG)F3+:设X(0)=CG
计算X(1):扫描F3中的各个函数依赖,找到左部为CG或CG子集的函数依赖,得到一个C→A函数依赖。

故有X(1)=X(0)∪A=CGA=ACG。

计算X(2):扫描F3中的各个函数依赖,找到左部为ACG或ACG子集的函数依赖,因为找不到这样的函数依赖。

故有X(2)=X(1),算法终止。

(CG)F3+=ACG。

(CG)F3+=ACG不包含D,故CG→D不是冗余的函数依赖,不能从F3中去掉。

D.设CE→A为冗余的函数依赖,则去掉CE→A,得:
F4={AB→C,D→E,D→G,C→A,BE→C,BC→D,CG→D,ACD→B,CE→G}
计算(CG)F4+:设X(0)=CE
计算X(1):扫描F4中的各个函数依赖,找到左部为CE或CE子集的函数依赖,得到一个C→A函数依赖。

故有X(1)=X(0)∪A=CEA=ACE。

计算X(2):扫描F4中的各个函数依赖,找到左部为ACE或ACE子集的函数依赖,得到一个CE→G函数依赖。

故有X(2)=X(1)∪G=ACEG。

计算X(3):扫描F4中的各个函数依赖,找到左部为ACEG或ACEG子集的函数依赖,得到一个CG→D函数依赖。

故有X(3)=X(2)∪D=ACDEG。

计算X(4):扫描F4中的各个函数依赖,找到左部为ACDEG或ACDEG子集的函数依赖,得到一个ACD→B函数依赖。

故有X(4)=X(3)∪B=ABCDEG。

因为X(4)=U,算法终止。

(CE)F4+=ABCDEG包含A,故CE→A是冗余的函数依赖,从F4中去掉。

③ 去掉F4中各函数依赖左边多余的属性(只检查左部不是单个属性的函数依赖)由于C→A,函数依赖ACD→B中的属性A是多余的,去掉A得CD→B。

故最小函数依赖集为:
F={AB→C,D→E,D→G,C→A,BE→C,BC→D,CG→D,CD→B,CE→G}
解2:利用Armstrong公理系统的推理规则求解
① 假设CG→B为冗余的函数依赖,那么,从F中去掉它后能根据Armstrong 公理系统的推理规则导出。

因为CG→D (已知)
所以CGA→AD,CGA→ACD (增广律)
因为ACD→B (已知)
所以CGA→B (传递律)
因为C→A (已知)
所以CG→B (伪传递律)
故CG→B是冗余的。

② 同理可证:CE→A是多余的。

③ 又因C→A,可知函数依赖ACD→B中的属性A是多余的,去掉A得CD→B。

故最小函数依赖集为:
F={AB→C,D→E,D→G,C→A,BE→C,BC→D,CG→D,CD→B,CE→G}。

相关文档
最新文档