最小函数依赖集
- 格式:pdf
- 大小:60.01 KB
- 文档页数:2
最小函数依赖集Fmin求解算法研究及实现
邸振山
【期刊名称】《电脑编程技巧与维护》
【年(卷),期】2012(000)018
【摘要】函数依赖反映了现实世界中数据的完整性约束,对关系数据库的分析和设计起着重要的作用.最小函数依赖集和模式规范化是规范化理论和模式分解中的两个最重要概念.研究并实现了最小函数依赖集的求解算法.
【总页数】3页(P14-15,21)
【作者】邸振山
【作者单位】秦皇岛市人力资源和社会保障局信息中心,河北秦皇岛066004【正文语种】中文
【相关文献】
1.关系模式最小函数依赖集的求解与应用 [J], 裴祥喜;李珉;赵福伟
2.一个用于求解关系模式上最小函数依赖集合(F)min的算法 [J], 庆振
树;chen,PP
3.函数依赖最小覆盖集求解算法——在数据库设计中的应用 [J], 邹炜;周定康
4.LR最小替换集求解算法研究 [J], 郝忠孝;刘国华;姚春龙
5.用最小不动点理论求解最小函数依赖集 [J], 谢宝永;李磊
因版权原因,仅展示原文概要,查看原文内容请购买。
数据库之极⼩化的原理极⼩函数依赖集求解⽅法每⼀个函数依赖集F均等价于⼀个极⼩函数依赖集F m。
称F m为F的最⼩依赖集。
1. 逐⼀检查F中各函数依赖FDi:X->Y,若Y=A1A2 Ak,k>=2,则⽤{X->Aj|j = 1,2, ,k}来取代 X -> Y2. 逐⼀检查F中各函数依赖FDi:X->A,令G = F -{X -> A},若A ∈ XG+,则从F中去掉此函数依赖(因为F与G等价的充要条件A)3. 逐⼀检查F中各函数依赖FDi:X->A,设X = B1B2 Bm,逐⼀考查Bi(i =1,2, ,m),若A ∈ (X - Bi)F+,则以X - Bi 取代X(因为F与F-{X->A}∪{Z->A}等价的充要条件是A∈ZF+,其中Z = X - Bi)。
###以上是极⼩化的算法思想,下⾯举⼀个例⼦进⾏详细的解释F = {B -> CD,C -> D,DE -> C,CE -> AB,E -> C},求其极⼩依赖集。
1、分解右部为多属性的函数依赖得:F={B -> C,B -> D,C -> D,DE -> C,CE -> A,CE -> B,E -> C} 2、去多余函数依赖 考查B -> C:G = F-{B->C},因为 C 不属于 (B)的G的闭包{BD},所以不能去掉B->C。
考查B->D:G=F-{B->D},因为D ∈(B)G+={BCD},所以应该去掉B->D。
F = {B->C,C->D,DE->C,CE->A,CE->B,E->C} 考查C->D:G=F-{C->D},因为D 不属于(C)G+ = {C},所以不能去掉C ->D。
考查DE ->C:G = F-{DE->C},因为C ∈ (DE)G+={DECAB},所以应该去掉 B->D。
一个用于求解关系模式上最小函数依赖集合(F)min的算法庆振树;chen,PP
【期刊名称】《计算机工程》
【年(卷),期】1989(000)006
【摘要】本文介绍一个采用DDHD技术求解关系模式上最小函数依赖集合(F)min 的算法,采用这种方法可以方便地从任意给定的函数依赖集合F直接求得相应的最小函数依赖集合,这种方法是关系数据库设计和规范化的有用工具。
【总页数】11页(P32-42)
【作者】庆振树;chen,PP
【作者单位】不详;不详
【正文语种】中文
【中图分类】TP311.13
【相关文献】
1.关系模式最小函数依赖集的求解与应用 [J], 裴祥喜;李珉;赵福伟
2.最小函数依赖集Fmin求解算法研究及实现 [J], 邸振山
3.函数依赖最小覆盖集求解算法——在数据库设计中的应用 [J], 邹炜;周定康
4.用最小不动点理论求解最小函数依赖集 [J], 谢宝永;李磊
5.大型Petri网模型最小trap (siphon)集合的快速求解算法 [J], 廖晶静;王明哲;倪枫;郭法滨
因版权原因,仅展示原文概要,查看原文内容请购买。
函数依赖及范式函数依赖基本概念:•函数依赖: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成立。
这三条为引理注意:•函数依赖推理规则系统(自反律、增广律和传递律)是完备的。
•由自反律所得到的函数依赖均是平凡的函数依赖。
四种范式的含义:•如果某个数据库模式都是第一范式的,则称该数据库模式是属于第一范式的数据库模式。
作者: 徐爱芸
作者机构: 江汉大学数学与计算机科学学院,湖北武汉430056
出版物刊名: 江汉大学学报:社会科学版
页码: 20-22页
主题词: 最优算法;属性集;函数依赖集闭包;属性集闭包;逻辑蕴含;最小函数依赖集;数据库原理
摘要:在数据库设计中,依据函数依赖集的定义及Armstrong公理,求出的是一个可能存在冗余的函数依赖集。
为了判断一个函数依赖是否为某一函数依赖集逻辑蕴含,只要用求属性闭包的方法求出函数依赖中决定子的属性闭包,判断依赖子是否包含在属性闭包中即可。
本文从求属性闭包的角度出发,给出一个求最小函数依赖集的算法。
最小函数依赖集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. 每一个非决定性属性都能够由一个或多个决定性属性唯一确定,并且这些决定性属性不能再分解。
基本函数依赖集被广泛应用于数据库的设计和优化中。
在关系模式中,很多属性之间都存在函数依赖关系,当我们对这些函数依赖关系进行分析时,可以找到一些能够唯一确定其他属性的属性,通过这些属性的选择,可以减少数据冗余和提高查询效率,从而优化数据库设计。
最小函数依赖集定义:如果函数依赖集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={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中去掉。
有关模式分解题目重点放在三范式的分解上,包括分解算法及无损连接性的判断,这类题目的解题步骤一般分为三步:第一步、将已有的函数依赖集转化为最小的函数依赖集(我们已经练习很多,不再多讲)第二步、进行三范式分解(分解算法见书P192——算法5.3)第三步、判断分解是否具有无损连接性(分解算法见书P190——算法5.2)下面这些例题同时也给出了答案。
建议同学们先不要看答案,自己做一遍再好答案对照一下,看是否有出入。
一、已知关系模式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};试求最小依赖集,然后采用模式分解算法将其进行规范化处理,规范为三范式,并用算法说明该分解是否具有无损连接性。
1、求最小函数依赖集(1)利用分解规则,将F中所有函数依赖变成右边是单个属性的函数依赖,得:F1={AB→C,D→E,D→G,C→A,BE→C,BC→D,CG→B,CG→D,ACD→B,CE→A,CE→G }(2)去掉F1中多余的函数依赖:对AB→C,在F1-{ AB→C }中计算(AB)G +=AB∵C∈AB,∴AB→C不是多余的函数依赖,不能去掉对D→E,在F1-{ D→E }中计算(D)G +=DG∵E∈DG,∴D→E不是多余的函数依赖,不能去掉对D→G,在F1-{ D→G }中计算(D)G +=DE∵G∈DE,∴D→G不是多余的函数依赖,不能去掉对C→A,在F1-{ C→A }中计算(C)G +=C∵A∈C,∴C→A不是多余的函数依赖,不能去掉对BE→C,在F1-{ BE→C }中计算(BE)G +=BE∵C∈BE,∴BE→C不是多余的函数依赖,不能去掉对BC→D,在F1-{ BC→D }中计算(BC)G +=ABC∵D∈ABC,∴BC→D不是多余的函数依赖,不能去掉对CG→B,在F1-{ CG→B }中计算(CG)G +=ABCDEG∵B∈ABCDEG,∴CG→B是多余的函数依赖,可以去掉对CG→D,在F1-{ CG→D ,CG→B }中计算(CG)G +=ACG∵D∈ACG,∴CG→D不是多余的函数依赖,不能去掉对ACD→B,在F1-{ ACD→B,CG→B }中计算(ACD)G +=ACDEG∵B∈ACDEG,∴ACD→B不是多余的函数依赖,不能去掉对CE→A,在F1-{ CE→A,CG→B }中计算(CE)G +=ABCDEG∵A∈ABCDEG,∴CE→A是多余的函数依赖,可以去掉对CE→G,在F1-{ CE→G ,CG→B ,CE→A }中计算(CE)G +=ACE∵G∈ACE,∴CE→G不是多余的函数依赖,不能去掉经上述计算得:F2={AB→C,D→E,D→G,C→A,BE→C,BC→D,CG→D,ACD→B,CE→G }(3)去掉F2中函数依赖左部多余的属性:对AB→C,在F2中分别计算对于A,求(B)F +=B,∵C∈B,∴A不是多余的属性,不可以去掉对于B,求(A)F +=A,∵C∈A,∴B不是多余的属性,不可以去掉对BE→C,在F2中分别计算对于B,求(E)F +=E,∵C∈E,∴B不是多余的属性,不可以去掉对于E,求(B)F +=B,∵C∈B,∴E不是多余的属性,不可以去掉对BC→D,在F2中分别计算对于B,求(C)F +=AC,∵D∈AC,∴B不是多余的属性,不可以去掉对于C,求(B)F +=B,∵C∈B,∴C不是多余的属性,不可以去掉对CG→D,在F2中分别计算对于C,求(G)F +=G,∵D∈G=(G)+,∴C不是多余的属性,不可以去掉对于G,求(C)F +=AC,∵D∈AC=(C)+,∴C不是多余的属性,不可以去掉对ACD→B,在F2中分别计算对于A,求(CD)F +=ABCDEG,∵B∈ABCDEG =(CD)+,∴A是多余的属性,可以去掉F2={AB→C,D→E,D→G,C→A,BE→C,BC→D,CG→D,CD→B,CE→G }对CD→B,在F2中分别计算对于C,求(D)+=DEG,∵B∈DEG,∴C不是多余的属性,不可以去掉对于D,求(C)+=AC,∵B∈AC,∴D不是多余的属性,不可以去掉对CE→G,在F2中分别计算对于C,求(E)+=E,∵G∈E=(E)+,∴C不是多余的属性,不可以去掉对于E,求(C)+=AC,∵G∈AC=(C)+,∴E不是多余的属性,不可以去掉最终得最小的函数依赖集:F m={AB→C,D→E,D→G,C→A,BE→C,BC→D,CG→D,CD→B,CE→G }2、规范化处理分解为三范式(1)找在Fm中不出现的属性,没有;(2)在Fm中找X→A,XA=U,没有;(3)对Fm按具有相同左部的原则分解为:ρ={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,G)3、判断该分解是否具有无损连接性首先构造初始表,如下图:由BC→D可以把B14、B34改为A4,由BC→E可以把B15、B45改为A5,由D→G可以把B16、B36、B46改为A6,此时表中第一行为A1、A2、A3、A4、A5、A6,所以此分解具有无损连接性。
函数依赖的逻辑蕴涵一、逻辑蕴涵定义:设有关系模式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+。
规范化理论习题1. 解释下列名词:函数依赖、部分函数依赖、完全函数依赖、传递函数依赖、候选关键字、主关键字、全关键字、1NF 、2NF 、3NF 、BCNF 、多值依赖、4NF 、连接依赖、5NF 、最小函数依赖集、无损分解函数依赖: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 是传递依赖。
候选关键字:设K 为关系模式R (U ,F )中的属性或属性集合。
若K —→F U ,则K 称为R的一个候选码(Candidate Key ),也称作为候选关键字或码。
主关键字:若关系模式R 有多个候选码,则选定其中一个作为主关键字(Primary Key ),有时也称作为主码。
全关键字:若关系模式R 整个属性组都是码,称为全关键字(All Key )或全码。
1NF :第一范式。
如果关系模式R 的所有属性的值域中每一个值都是不可再分解的值, 则称R 是属于第一范式模式。
如果某个数据库模式都是第一范式的,则称该数据库存模式属于第一范式的数据库模式。
第一范式的模式要求属性值不可再分裂成更小部分,即属性项不能是属性组合和组属性组成。
2NF :第二范式。
如果关系模式R 为第一范式,并且R 中每一个非主属性完全函数依赖于R 的某个候选键, 则称是第二范式模式;如果某个数据库模式中每个关系模式都是第二范式的,则称该数据库模式属于第二范式的数据库模式。
极小函数依赖集集合的极小性是最基本的结构性质。
函数依赖集是实数集的一个重要特征,在学习和理解极小函数依赖集方面有重要作用。
令,则称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、给定的集合具有函数依赖集当且仅当该集合中存在着非空开集,而且非空开集的个数等于该集合中元素的个数的乘积。
最小函数依赖集
定义:如果函数依赖集F满足下列条件,则称F为最小函数依赖集或最小覆盖。
①F中的任何一个函数依赖的右部仅含有一个属性;
②F中不存在这样一个函数依赖X→A,使得F与F-{X→A}等价;
③F中不存在这样一个函数依赖X→A,X有真子集Z使得
F-{X→A}∪{Z→A}与F等价。
求最小函数依赖集分三步:
1.将F中的所有依赖右边化为单一元素
此题fd={abd->e,ab->g,b->f,c->j,cj->i,g->h};已经满足
2.去掉F中的所有依赖左边的冗余属性.
作法是属性(只检查左边不是单一属性的函数依赖)中去掉其中的一个,看看是否依然可以推导
此题:abd->e,去掉a,则(bd)+不含e,故不能去掉,同理b,d都不是冗余属性
ab->g,也没有
cj->i,因为c+={c,j,i}其中包含i,所以j是冗余的.cj->i将成为c->i F={abd->e,ab->g,b->f,c->j,c->i,g->h};
3.去掉F中所有冗余依赖关系.
做法为从F中去掉某关系,如去掉(X->Y),然后在F中求X+,如果Y在X+中,则表明x->是多余的.需要去掉.
此题如果F去掉abd->e,F将等于{ab->g,b->f,c->j,c->i,g->h},而(abd)+={a,d,b,f,g,h},其中不包含e.所有不是多余的.
同理(ab)+={a,b,f}也不包含g,故不是多余的.
b+={b}不多余,c+={c,i}不多余
c->i,g->h多不能去掉.
所以所求最小函数依赖集:F={abd->e,ab->g,b->f,c->j,c->i,g->h};。