计算最小函数依赖集示例
闭包最小依赖集
例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吗?如果不是,请进一步分解。
最小函数依赖集Fmin求解算法研究及实现
最小函数依赖集Fmin求解算法研究及实现
邸振山
【期刊名称】《电脑编程技巧与维护》
【年(卷),期】2012(000)018
【摘要】函数依赖反映了现实世界中数据的完整性约束,对关系数据库的分析和设计起着重要的作用.最小函数依赖集和模式规范化是规范化理论和模式分解中的两个最重要概念.研究并实现了最小函数依赖集的求解算法.
【总页数】3页(P14-15,21)
【作者】邸振山
【作者单位】秦皇岛市人力资源和社会保障局信息中心,河北秦皇岛066004【正文语种】中文
【相关文献】
1.关系模式最小函数依赖集的求解与应用 [J], 裴祥喜;李珉;赵福伟
2.一个用于求解关系模式上最小函数依赖集合(F)min的算法 [J], 庆振
树;chen,PP
3.函数依赖最小覆盖集求解算法——在数据库设计中的应用 [J], 邹炜;周定康
4.LR最小替换集求解算法研究 [J], 郝忠孝;刘国华;姚春龙
5.用最小不动点理论求解最小函数依赖集 [J], 谢宝永;李磊
因版权原因,仅展示原文概要,查看原文内容请购买。
数据库系统概论候选码的求解方法
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的唯一候选码,
求最小函数依赖集例题
求最小函数依赖集例题最小函数依赖集是指在关系模式中,能够唯一确定所有属性的最小集合。
为了求最小函数依赖集,我们需要先了解函数依赖的概念。
函数依赖是指在关系模式R中,给定一个关系模式的属性集合X,如果对于X的任意两个元组t1和t2来说,如果t1和t2在属性集合X 的取值相同,那么它们在关系模式的其他属性集合Y上的取值也相同。
这种情况下,我们称Y函数依赖于X,用X -> Y表示。
举个例子来说,假设我们有一个关系模式R(A, B, C),其中A是关系模式的候选键。
如果我们观察到属性集合A的取值能够唯一确定属性集合B的取值,那么我们可以说B函数依赖于A,用A -> B表示。
同样地,如果属性集合A的取值能够唯一确定属性集合C的取值,我们可以说C函数依赖于A,用A -> C表示。
现在我们来解决一个求最小函数依赖集的例题。
假设我们有一个关系模式R(A, B, C, D, E),其中A是候选键。
根据已给的函数依赖集如下:1. A -> B2. A -> C3. BC -> D4. D -> E我们的目标是找出最小函数依赖集。
首先,我们来看一下函数依赖集1和2。
由于A是候选键,并且A能够唯一确定B和C的取值,所以函数依赖集1和2是必要的。
接下来,我们看一下函数依赖集3。
根据函数依赖集3,BC能够唯一确定D的取值。
然而,我们注意到函数依赖集3可以通过分解成两个函数依赖集来表示:B -> D和C -> D。
因此,函数依赖集3不是必要的。
最后,我们来看一下函数依赖集4。
根据函数依赖集4,D能够唯一确定E的取值。
我们可以发现函数依赖集4是必要的。
综上所述,最小函数依赖集为:1. A -> B2. A -> C3. B -> D4. C -> D5. D -> E这样,我们就得到了最小函数依赖集。
在数据库设计中,最小函数依赖集对于避免数据冗余和保持数据一致性非常重要。
python数据库最小函数依赖集
python数据库最小函数依赖集在数据库设计中,函数依赖是一种重要的概念,用于描述属性之间的关系。
最小函数依赖集是指在数据库关系中,能够唯一确定其他属性的最小属性集合。
在本文中,我们将探讨Python数据库最小函数依赖集的相关知识。
在数据库中,关系模式通常由属性组成,这些属性之间存在一定的函数依赖关系。
函数依赖可以分为完全函数依赖、部分函数依赖和传递函数依赖等不同类型。
而最小函数依赖集则是指在一个关系中,能够唯一确定其他属性的最小属性集合。
在Python中,我们可以使用第三方库来进行数据库设计和操作,比如使用SQLAlchemy库可以方便地进行数据库表的创建和操作。
在设计数据库表时,我们需要考虑属性之间的函数依赖关系,以确保数据的完整性和一致性。
为了找到数据库表中的最小函数依赖集,我们可以通过分析属性之间的关系来确定。
首先,我们需要找出所有的函数依赖关系,然后逐步排除冗余的属性,直到找到最小的函数依赖集为止。
举个例子来说,假设有一个学生信息表,包含学生ID、姓名、年龄和性别等属性。
在这个表中,如果我们知道学生ID就可以唯一确定学生的姓名,那么学生ID->姓名就是一个函数依赖关系。
而如果知道学生ID和姓名就可以确定学生的年龄,那么学生ID、姓名->年龄就是另一个函数依赖关系。
通过分析这些函数依赖关系,我们可以找到最小函数依赖集,即学生ID->姓名、学生ID、姓名->年龄。
在Python中,我们可以编写程序来自动化地找到数据库表中的最小函数依赖集。
通过读取数据库表的结构,分析属性之间的关系,然后排除冗余的属性,最终得到最小函数依赖集。
这样可以提高数据库设计的效率,减少人工错误的可能性。
总的来说,最小函数依赖集在数据库设计中起着重要的作用,能够帮助我们准确地描述属性之间的关系,确保数据的完整性和一致性。
在Python中,我们可以通过分析属性之间的函数依赖关系,找到最小函数依赖集,从而优化数据库设计和操作。
计算最小函数依赖集示例
计算最小函数依赖集示例举例:已知关系模式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的最小函数依赖集。
解:利用算法求解,使得其满足三个条件①利用分解规则,将所有的函数依赖变成右边都是单个属性的函数依赖,得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函数依赖。
计算最小函数依赖集示例
计算最小函数依赖集示例一、求最小依赖集的算法①根据推理规则的分解性,右部最小化②消除左边的冗余属性③消除冗余的FD(依赖)重点:操作步骤的顺序不能颠倒,颠倒了可能消除不了FD中左边冗余的属性,或冗余的依赖。
二、具体操作详解(以下两种意思相同,表述略有区别罢了)(1)右部最小化:右切,使每个函数依赖的右部仅有一个属性(2)规则最小化:除本求包(对每个函数依赖的左部做除本求包,求包的结果如果不包含本函数依赖的右部,本函数依赖保留;求包的结果如果包含了本函数依赖的右部,删除本函数依赖)(3)左部最小化注意,解题一定要先(3)后(2)三、例题,反例等反例,假如将②③步骤颠倒例:求**F={ABD→AC,C→BE,AD→BF,B→E}**的最小函数依赖集FmF_mFm注意:当在函数依赖已经改变的地方开始一个新步骤时,重写函数依赖集很重要,这样可以在下一步中方便引用。
第一步对F中的函数依赖运用分解原则来创建一个等价函数依赖集H,该集合中每一个函数依赖的右部是单个属性:H={①ABD→A,②ABD→C,③C→B,④C→E,⑤AD→B,⑥AD→F,⑦B→E}第二步考察每一个函数依赖是否是必须的,去除非必要的函数依赖(1)ABD→A是平凡的函数依赖(就是A是ABD的子集,所以他是平凡的依赖),所以显然是非必要的函数依赖,因此去除。
保留在H中的函数依赖是H={②ABD→C,③C→B,④C→E,⑤AD→B,⑥AD→F,⑦B→E}(2)考察ABD→C,去掉此函数依赖将会得到新的函数依赖集J ={③C→B,④C→E,⑤AD→B,⑥AD→F,⑦B→E}。
如果ABD→C 是非必要的,则(ABD)J+(ABD)_J^+(ABD)J+=ABDFE,不包含C,因此ABD→C是必要的函数依赖,不能去掉。
H={②ABD→C,③C→B,④C→E,⑤AD→B,⑥AD→F,⑦B→E}(3)考察C→B,J={②ABD→C,④C→E,⑤AD→B,⑥AD→F,⑦B→E},则**CJ+C_J^+CJ+=CE**,不包含B,因此C→B 是必要的函数依赖,保留在H中。
函数依赖(理论及举例)
函数依赖(理论及举例)教你如何理解函数依赖一、函数依赖的概念函数依赖:函数依赖就是讨论一个数据表(关系)中属性值之间所存在的函数关系。
函数是一种数学中的概念,被引入到数据库中对数据的联系进行分析。
在一个关系中,属性相当于数学上的变量,属性的域相当于变量的取值范围,属性在一个元组上的取值相当于属性变量的当前值。
例如:在下面的这个职工关系中,职工号、姓名、性别、年龄、职务等属性都相当于变量;职工号属性的域,即四位十进制数字,就是取值范围,性别属性的域:{男、女},就是性别属性的取值范围。
此关系中包含有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为决定因素。
最小函数依赖集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(A1, A2, …, An),其中Ai是属性名称,那么我们可以表达出该关系模式中属性之间的函数依赖关系。
例如,我们可以表示函数依赖集为{A1->A2, A2->A3, A1->A4}。
在这个例子中,关系模式R的属性A2依赖于属性A1,属性A3依赖于属性A2,属性A4依赖于属性A1。
这些依赖关系对于理解关系模式中属性之间的相互作用至关重要,并且为设计良好的数据库提供了基础。
基本函数依赖集指的是,如果一个关系模式R的多个属性Ai和Aj具有函数依赖关系Ai->Aj,则称Ai是一个“决定性属性”,Aj是“被决定性属性”。
基本函数依赖集是最小函数依赖集,其中包含了关系模式中所有的决定性属性,并且这些属性是“不可分解”的。
例如,对于关系模式R(A1, A2, …, An),如果存在基本函数依赖集为{A1->A2, A2->A3, A1->A4},那么:1. 属性A1是一个决定性属性,因为它能够唯一确定属性A2和属性A4的值。
1. 它包含关系模式中所有的决定性属性。
2. 每一个非决定性属性都能够由一个或多个决定性属性唯一确定,并且这些决定性属性不能再分解。
基本函数依赖集被广泛应用于数据库的设计和优化中。
在关系模式中,很多属性之间都存在函数依赖关系,当我们对这些函数依赖关系进行分析时,可以找到一些能够唯一确定其他属性的属性,通过这些属性的选择,可以减少数据冗余和提高查询效率,从而优化数据库设计。
ww就说函数依赖集F覆盖G
码的成员
如果X是R类属性,则X必不在任何候选码中பைடு நூலகம்如果X是L和N类组成的属性组,且X+包含了
全部属性,则X是R的唯一候选码
算法:对左边为单属性的函数依赖集求所 有候选码
• 单属性下求解候选码的充要条件
(1) 求F的最小依赖集F’ (2) 作出函数依赖图FDG (3) 从FDG图中找出无入边的属性集X (4) 察看FDG图中有无回路,若无,则输出X并结 束,否则 进行下一步 (5) 从各独立回路中各取一个结点的属性与X组成一个候选 码,重复取得所有可能的组合,即R的全部候选码
(1) F 中任一函数依赖的右部 ( 2 ) F 中不存在这样的函数依 F 与 F { X A}等价 ( 3 ) F 中不存在这样的函数依 赖 X A, X 有 真子集 Z 使得 F { X A} { Z A}与 F 等价 仅含一个属性 赖 X A , 使得
性质:函数依赖集F的最小函数依赖集不一定唯一,它与 求解的次序有关
已知 R ( XYWZ ), F {W Y , Y W , X WY , Z WY , XZ W }, 求 F ' 和所有的候选码 F ' {W Y , Y W , X Y , Z W }, 唯一的候选码为 ZX
Z
W
X
Y
已知 R ( SDBIOQ ), F { S D , I B , B O , O Q , Q I }, 求 F ' 和所有的候选码
包含 Y , 若是则去掉 X Y , 否则不去掉 的属性:逐个检查 XY A , 看 Y 是否多余,即考 Y 多余,否则不多余
察 X 是否包含 A ,若包含则表示
数据库求闭包,求最小函数依赖集,求候选码,判断模式分解是否为无损连接,3NF,BCNF
1.说白话一点:闭包就是由一个属性直接或间接推导出的所有属性的集合。
例(1):设有关系模式R(U,F),其中U={A,B,C,D,E,I},F={A→D,AB→E,BI→E,CD→I,E→C},计算(AE)+解: (1) 令X={AE},X(0)=AE(2)在F中寻找尚未使用过的左边是AE的子集的函数依赖,结果是: A→D,E→C;所以X(1)=X(0)DC=ACDE,显然X(1)≠X(0).(3) 在F中寻找尚未使用过的左边是ACDE的子集的函数依赖,结果是: CD→I;所以X(2)=X(1)I=ACDEI。
虽然X(2)≠X(1),但F中寻找尚未使用过函数依赖的左边已经没有X(2)的子集,所以不必再计算下去,即(AE)+=ACDEI。
例如:f={a->b,b->c,a->d,e->f};由a可直接得到b和d,间接得到c,则a的闭包就是{a,b,c,d}2.候选码的求解理论和算法对于给定的关系R(A1,A2,…An)和函数依赖集F,可将其属性分为4类:L类仅出现在函数依赖左部的属性。
R 类仅出现在函数依赖右部的属性。
N 类在函数依赖左右两边均未出现的属性。
LR类在函数依赖左右两边均出现的属性。
定理:对于给定的关系模式R及其函数依赖集F,若X(X∈R)是L类属性,则X必为R的任一候选码的成员。
推论:对于给定的关系模式R及其函数依赖集F,若X(X∈R)是L类属性,且X+包含了R的全部属性;则X必为R的唯一候选码。
例(2):设有关系模式R(A,B,C,D),其函数依赖集F={D→B,B →D,AD →B,AC →D},求R的所有候选码。
解:考察F发现,A,C两属性是L类属性,所以AC必是R的候选码成员,又因为(AC)+=ABCD,所以AC是R的唯一候选码。
定理:对于给定的关系模式R及其函数依赖集F,若X(X∈R)是R类属性,则X不在任何候选码中。
定理:对于给定的关系模式R及其函数依赖集F,若X(X∈R)是N类属性,则X必包含在R的任一候选码中。
数据库系统概论第4章补充练习答案
•补充习题• 1. 设关系模式R=(U,F),U=ABCDEG,F={AB→D,DB→EG,AC→E,BE→A, A→B },求所有候选码。
(AC,BCE,BCD)• 2. 设关系模式R=(U,F),U=ABCDEG,求下列函数依赖集F等价的最小函数依赖集Fmin.•(1)F={AB→CD,A→BE,D→E,B→D}1.F1={AB->C,AB->D,A->B,A->E,D->E,B->D}2.F2={AB->C,A->B, D->E,B->D}3.Fmin={A->C,A->B,D->E,B->D}•(2)F={ABC→D, AC→E, E→AB,B→D,CD→B}1.F1={ABC→D, AC→E, E→A, E→B,B→D,CD→B}2.F2={AC→E, E→A, E→B,B→D,CD→B}3.Fmin={AC→E, E→A, E→B,B→D,CD→B}•(3)F={AB→C,D→EG,C→A,BE→C,BC→D,CG→BD,ACD→B,C E→AG}1.F1={AB→C,D→E,D->G,C→A,BE→C,BC→D,CG→B, CG→D,ACD→B,CE→A, CE→G}2.F2={AB→C,D→E,D->G,C→A,BE→C,BC→D,CG->D,ACD→B, CE→G}或者F2={AB→C,D→E,D->G,C→A,BE→C,BC→D,CG->B,CE→G}3. {AB→C,D→E,D->G,C→A,BE→C,BC→D,CG->D,CD→B, CE→G}或者{AB→C,D→E,D->G,C→A,BE→C,BC→D,CG->B,CD→B, CE→G}• 3.判断并证明下列关系模式最高属于哪一级范式•(1)R1:U=ABCD, F={AB→C,C→D }( AB,2 )•(2)R2:U=ABCD, F={AB→C,D→A, D→B }(D,2)•(3)R3:U=ABCD, F={A→B,B→C,CD→A }(BD,CD,AD,3)•(4)R4:U=ABCD, F={ A→B,B→C }(AD,1)•(5)R2:U=ABCDE, F={AB→C, BC→D, AB→E, ABCD→DE, BED→BE}(AB,2)• 4. 把下列关系模式分解为无损连接和保持函数依赖的3NF:•(1)U=ABCD, F={AB→CD,D→C, CD→B}1.Fmin={AB->D,D->C,D->B},码AD,AB2.分组U1=ABD,根据算法 后面合并成 U2=BCD3.吸收,得U1,U24. ADB中包含了码F1={ABD,AB->D,D->B}F2={BCD,D->B,D->C}•(2)U=ABCDEG, F={ B→CD,DE→A, E→C, C→A, BD→AC }1. Fmin={B->C,B→D, E→C, C→A}2.分组U1=BCD,U2=EC U3=CA,U0=G3.吸收,得U2,U3,U44.检查码F2={EC,E->C}F3={CA,C->A}F4={BCD,B->D,B->D},F4=(BEG. ф)• 5. 把下列关系模式分解为无损连接的BCNF: U=ABCD, F={A→C,B→AC, D→AC, BD→A}1.Fmin={A→C,B→A, D→A}2.码 BD,A->C不符合R1={AC,A->C} R2=(ABD,B->A,D->A)B->A不符合R3={AB,B->A} R4={BD, ф}得到R1,R3,R4•算法4b.3(求最小函数依赖集的算法)•1)求最简式:对F中所有右边为多属性形如X→ A1A2…A n的函数依赖用X→Ai,i=1,2, …,n来代替,得到函数依赖集F1,F1全由最简式组成。
模式分解练习题
有关模式分解题目重点放在三式的分解上,包括分解算法及无损连接性的判断,这类题目的解题步骤一般分为三步:第一步、将已有的函数依赖集转化为最小的函数依赖集(我们已经练习很多,不再多讲)第二步、进行三式分解(分解算法见书P192――算法5.3)第三步、判断分解是否具有无损连接性(分解算法见书P190――算法5.2 )一、已知关系模式R(U, F), U=(A, B, C, D, E, G); F={AB—C, D—EG C^A, C,BC^D, CS BD, A C—B, CE-AG};试求最小依赖集,然后采用模式分解算法将其进行规化处理,规为三式,并用算法说明该分解是否具有无损连接性。
1、求最小函数依赖集(1)利用分解规则,将F中所有函数依赖变成右边是单个属性的函数依赖,得:F i={AB—C, D—E, D—G C—A , BE—C, BS D, CS B, CSD , ACD^B , CE^A, CE^ G }(2)去掉F i中多余的函数依赖:对AB^ C,在F i-{ AB — C }中计算(AB)G+=AB•/ C€ AB, ••• AB^C不是多余的函数依赖,不能去掉对D— E ,在F i-{ D — E }中计算(D)G+=DGE DG二D—E不是多余的函数依赖,不能去掉•/ E对D—G 在F i-{ D —G }中计算(D)G +=DE•/ GE DE二D—G不是多余的函数依赖,不能去掉对C—A,在F i-{ C — A }中计算(C)G+=CE C,C—A不是多余的函数依赖,不能去掉•/ A对BLC,在F i-{ BE — C }中计算(BE)G+=BEE BE, /• BE—C不是多余的函数依赖,不能去掉•/ C对BC—D,在F i-{ BC — D }中计算(BQ G+=ABCE ABC二BC^D不是多余的函数依赖,不能去掉•/ D对CS B,在F i-{ CG — B }中计算(CG G+=ABCDEGE ABCDEG二CSB是多余的函数依赖,可以去掉•/ B对CS D,在F i-{ CG — D , CSB }中计算(CG G+=ACGE ACG二CSD不是多余的函数依赖,不能去掉•/ D对ACD^ B,在F i-{ ACD —B, CSB }中计算(ACD G+=ACDEGE ACDEG二AC"B不是多余的函数依赖,不能去掉•/ B对CP A,在F i-{ CE —A, CS B }中计算(CB G+ =ABCDEGE ABCDEG二CE^A是多余的函数依赖,可以去掉•/ A对CP G 在F i-{ CE —G , CSB , CE^A }中计算(CB J=ACE•/ G€ ACE二CE^G不是多余的函数依赖,不能去掉经上述计算得:F2={AB—C, D—E, D—G, C—A BE^ C , BC—D, CS D, AC—B , CE^ G }(3)去掉F2中函数依赖左部多余的属性:对A4 C,在F2中分别计算对于A求(B)F+=B,丁C E B,二A不是多余的属性,不可以去掉对于B,求(A)F+=A,丁C E A,B不是多余的属性,不可以去掉对BL C,在F2中分别计算对于B,求(巳F+=E , •/ C E E,B不是多余的属性,不可以去掉对于E,求(B)F+=B , •/ C E B,二E不是多余的属性,不可以去掉对BC—D,在F2中分别计算•/ D E AC,「. B 不是多余的属性,不可以去掉•/ C E B , •:• C 不是多余的属性,不可以去掉 •/ D E G= (G ) +, /• C 不是多余的属性,不可以去掉•/ D E AC=(C )+, /• C 不是多余的属性,不可以去掉对于人求(CD F +=ABCDEG 丁 B E ABCDEG (CD ) +, /• A 是多余的属性,可以去掉F 2={AB T C, D T E, ”G C T A BL C , BC ^ D , CS D , CD ^ B , CE^ G } 对CD T B , 在 F 2中分别计算对于C,求(D ) +=DEG T B E DEG 二C 不是多余的属性,不可以去掉对于D,求(C +=AC, •/ B E AC, /• D 不是多余的属性,不可以去掉对CP G 在F 2中分别计算对于C,求(E ) +=E , •/ G€ E= ( E ) +,C 不是多余的属性,不可以去掉 对于E,求(C +=AC, •/ G€ AC=(C ) +,E 不是多余的属性,不可以去掉 最终得最小的函数依赖集:F m ={AB T c, D T E , D TG C T A , BE^ C, BC T D, CS D, CD^ B , CE^ G }2、规化处理分解为三式(1) 找在Fm 中不出现的属性,没有; (2) 在Fm 中找X T A,XA=U,没有;(3) 对Fm 按具有相同左部的原则分解为:p ={ABC, DEG, BCE, BCD, CDG, , CEG } 分解为三式后的结果为:R1 (A B , C ) R2 (D, E , G R3 (B , C , E ) R4 (B , C , D )R5 (C, D ,G R6 (C, E ,3、判断该分解是否具有无损连接性 首先构造初始表,如下图:由BC T D 可以把B i4、B 34改为A ,由BC T E 可以把B s 、虫改为A ,由D T G 可以把B e 、%、B 46改为A ,此时表中第 一行为A 、A 、A 、代、A 、A ,所以此分解具有无损连接性。
极小函数依赖集
极小函数依赖集集合的极小性是最基本的结构性质。
函数依赖集是实数集的一个重要特征,在学习和理解极小函数依赖集方面有重要作用。
令,则称M为G的极小函数依赖集。
在实数域,由定义可知, G 是有界实数集,且g是有界实数。
所以对任意m>0,若g(x)=0,则称g(x)是M的极小不等式,或简记为: G为有界实数集;对任意m,若g(x)<0,则称g(x)是M的极小无穷大不等式,或简记为: G为有界实数集;对任意m>0,若g(x)=0,则称g(x)是M的极小不等式,或简记为: G为有界实数集。
1。
集合G的元素在给定的集合D中满足函数依赖集等于其子集在D中所有可能的值之总和。
这就说明G中每一个元素都是在其它元素所构成的子集上取值时有意义的。
在某些情况下,当函数依赖集是可数集时,则这种表述的意思更加清楚。
2。
给定的集合G中的函数依赖集的大小等于所有在其中取值的自变量的个数之和。
例如对有限实数集Z,如果只考虑对应于任意两个实数的差异,那么我们就说Z具有函数依赖集,或者说函数依赖集包含了Z。
3。
当其它条件相同时,函数依赖集中函数的数目与这个集合中自变量的个数的比值等于1。
这是因为我们在分析中把这样的集合称为自然数集合。
4。
给定的集合具有函数依赖集当且仅当它在这个集合中有序对的个数至少为该集合中元素个数的乘积,或者说当且仅当这个集合中元素的排列方式使得每一对的序号之和为1,即当且仅当该集合中元素不全为1时,该集合的序号按顺序增加。
注意这里的元素不全为1的问题是次要的。
5。
给定的集合具有函数依赖集当且仅当它在这个集合中的序对满足某些条件。
也就是说当且仅当它在这个集合中元素的排列方式使得每一对的序号之和为1,即当且仅当该集合中元素不全为1时,该集合的序号按顺序增加时,则该集合的函数依赖集等于其自身。
注意:1、函数依赖集只能在实数集上定义。
2、给定的集合具有函数依赖集当且仅当该集合中存在着非空开集,而且非空开集的个数等于该集合中元素的个数的乘积。
极小函数依赖集怎么求
极小函数依赖集怎么求
极小函数依赖集的求解过程通常包括以下几个步骤:
1.分解多属性右部项:用分解的法则,使F中的任何一个函数依赖的右部仅含有一个属性。
2.去掉多余的函数依赖:从第一个函数依赖X→Y开始将其从F中去掉,然后在剩下的函数依赖中求X的闭包X+,看X+是否包含Y,若是,则去掉X→Y;否则不能去掉,依次做下去。
直到找不到冗余的函数依赖。
3.去掉各依赖左部多余的属性:把一个左部多项函数依赖的属性逐个去除,看能否再推出,能则去除,不行则保留。
按照上述步骤进行求解后,所得结果就是该关系模式的极小函数依赖集。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算最小函数依赖集示例
举例:已知关系模式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的最小函数依赖集。
解:利用算法求解,使得其满足三个条件
①利用分解规则,将所有的函数依赖变成右边都是单个属性的函数依赖,得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}。