CN107633099A - 数据库一致性错误的重要度判定方法 - Google Patents
数据库一致性错误的重要度判定方法 Download PDFInfo
- Publication number
- CN107633099A CN107633099A CN201710981214.5A CN201710981214A CN107633099A CN 107633099 A CN107633099 A CN 107633099A CN 201710981214 A CN201710981214 A CN 201710981214A CN 107633099 A CN107633099 A CN 107633099A
- Authority
- CN
- China
- Prior art keywords
- function
- violation
- edge
- dependent
- graph
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据库一致性错误的重要度判定方法,用于解决现有方法实用性差的技术问题。技术方案是首先根据C‑Graph和D‑Graph的定义构建关系表的C‑Graph和D‑Graph超图,利用这两种超图描述数据库中关系表的属性之间的依赖关系以及属性值之间的依赖关系;再根据给出的函数依赖约束间关系的分类对表中的函数依赖约束关系进行归类;找出函数依赖违规并根据给出的函数依赖违规间关系的分类对函数依赖违规间的关系进行归类;利用公式计算函数依赖违规的效益值;根据计算得到的函数依赖违规效益值对函数依赖违规重要度进行排序。本发明降低了因修复一个函数依赖违规而引起另一些函数依赖违规带来的代价,实用性好。
Description
技术领域
本发明属于计算机应用技术领域,具体涉及一种数据库一致性错误的重要度判定方法。
背景技术
文献"On approximating optimum repairs for functional dependencyviolations,DBLP,2009年53-62页"公开了一种通过最小化距离度量修复数据库中违反函数依赖的一致性错误的方法。该距离度量取决于数据库中修改元组的数量以及修改元组的权重,通过尽可能小的距离度量对数据库中的函数依赖进行值修复。该方法中对数据库的函数依赖修复主要考虑修改元组的数量以及修改元组的权重,并未考虑函数依赖之间的关系。函数依赖违规即违反函数依赖的情况,在实际中函数依赖违规之间不是相互独立的,其重要性也是不尽相同的。在数据库中,其中一些函数依赖违规比另一些更重要,一些函数依赖违规会引起另一些函数依赖违规。在修复数据库中函数依赖时,找出函数依赖违规之间的关系并且根据函数依赖违规的重要度对函数依赖进行修复,帮助用户找出函数依赖违规根本的原因,以更低的代价修复数据库中的函数依赖违规。
发明内容
为了克服现有方法实用性差的不足,本发明提供一种数据库一致性错误的重要度判定方法。该方法首先根据C-Graph和D-Graph的定义构建关系表的C-Graph和D-Graph超图,利用这两种超图描述数据库中关系表的属性之间的依赖关系以及属性值之间的依赖关系;再根据给出的函数依赖约束间关系的分类对表中的函数依赖约束关系进行归类;找出函数依赖违规并根据给出的函数依赖违规间关系的分类对函数依赖违规间的关系进行归类;利用公式计算函数依赖违规的效益值;根据计算得到的函数依赖违规效益值对函数依赖违规重要度进行排序。在修复数据库中的函数依赖违规时,找出函数依赖违规中根本的原因,以降低因修复一个函数依赖违规而引起另一些函数依赖违规带来的代价,实用性好。
本发明解决其技术问题所采用的技术方案:一种数据库一致性错误的重要度判定方法,其特点是包括以下步骤:
步骤一、对数据库中的关系表构建C-Graph和D-Graph超图。C-Graph给出数据库D上的函数依赖集合Σ,C-Graph GΣ=(V,E):Σi:Xi→Yi, U=X∪Y。对于Σ中的每一个Σi:Xi→Yi,有一个超边ei∈E,T(ei)=Xi且H(ei)=Yi。D-Graph:根据C-GraphGΣ和关系表R,GR=(V,E):t∈R,每一个节点Vi∈V被定义为Vi=(Ai,Fi),对于每一个属性Ai∈U的不同的值,都有一个在V中标为(Ai,Fi)的节点。给出C-Graph边EΣ={TΣ(E),HΣ(E)},会产生许多条D-Graph边,每一个D-Graph边Ei∈E被定义为Ei={T(Ei),H(Ei),Ω(Ei)},其中T(Ei).Ai=TΣ(E);H(Ei).Ai=HΣ(E),每一个包含所有和相关的元组的IDs,被定义为函数依赖X→Y意味着X的值相同则Y值也必须相同,根据X的值将关系表中的数据分为不同的等价类,每一个等价类中,所有成员有相同的X值,其Y值相同或者不同。在D-Graph中有两种超边,一种是只有一个头结点及|H(E)|=1,另一种则是有多个头结点及|H(E)|>1,分别为B-arc边和边。在D-Graph中,如果包含一个或者多个边,意味着至少一个函数依赖等价类的左属性映射到多个等价类的右属性。若图中只包含B-arc边,意味着每一个等价类的左属性仅映射一个等价类的右属性,因此没有函数依赖违规。所以函数依赖违规检查转变为在D-Graph中查找函数依赖违规修复问题转化为转换所有的边为B-arc边,其目标是对所有违反函数依赖的元组集合排序即对函数依赖违规进行排序,因此问题转换为对D-Graph中所有边进行排序。
X、Y:为关系表中的属性,U=X∪Y;
Σ:函数依赖集合;
V:为超图中节点的集合;
E:为超图中超边的集合;
H(e):表示超边的头结点;
T(e):表示超边的尾节点;
t:为表R中的元组;
Ai:是属性名且Ai∈U;
Fi:是t[Ai]的一个值;
步骤二、对不同函数依赖之间的关系进行分类。假设Σ集合为最小覆盖,Σi:X→Y和Σj:X'→Y',根据函数依赖最小覆盖的定义:
若或者Σi和Σj之间关系分为四类:
Σi和Σj中的属性表示如下:
如果Σi和Σj共享约束左边的一些属性,表示如下:
如果约束的右边属性值相同,表示如下:
为
如果约束左边和右边都有共享属性,表示如下:
为
如果Σi和Σj中的属性满足以下:
为
为
为
如果Σi和Σj中的属性满足以下:
为
为
为
Σ:函数依赖集合名称;
步骤三、找出关系表中的函数依赖违规并对不同函数依赖违规间的关系进行分类。假设当解决函数依赖违规问题时,仅修正函数依赖约束的右边属性的值。Σi和Σj之间的违规模式分为以下四类:
在和中解决其中一个约束的违规将不会影响另一个约束的违规,定义为模式。
在和中当修正约束的右边属性的值时,将影响所有共享属性所在函数依赖约束的右属性的值,定义为模式。
在和中修改约束右属性的值将影响另一个约束中违规的左属性的值,定义为模式。
在模式中分为以下几种情况:
假设是边且边转变为B-arc影响
假设是边且 边转变为B-arc将自动使转变为B-arc边。
假设是边且 边转变为B-arc将自动使转变为B-arc边。
假设是B-arc边且 是边且转变边为B-arc将产生新的边
假设是边且 无论转变边为B-arc还是边转变为B-arc都会将新的边
在模式中分为以下几种情况:
表示边从v开始,表示边从v'开始,U=e.T(e)-{v},U'=e'.T(e')-{v'}。
对于每一对e和e',假设 转变为会带来新的边。
对于每一对e和e',假设 转变为会移动中的元组从B-arc边e'到另一条B-arc边e。
对于每一对e和e',假设 转变为会移动中的元组从边e'到另一条B-arc边e。
对于每一对e和e',假设若转变为会移动中的元组从边e'到一条新边e;
若转变为会移动中的元组从边e'到边e。
对于每一对e和e',U≠U',转变为不影响另一条新边的形成。
步骤四、函数依赖违规重要度评估,忽视所有的代价模型,修正函数依赖违规可能给数据库带来一些消极和积极的影响。一个函数依赖违规修正可以给关系表R质量的提高带来一些效益,所以根据每一个违规带来的潜在效益来评估其重要性。用函数依赖违规修正操作前和操作后脏元组的改变数量来评估函数依赖违规的重要性。vio(Σ,R)Θvio(Σi,R,v)表示修正函数依赖违规vio(Σi,R,v)之后的函数依赖违规集合。|vio(Σ,R)|表示包括vio(Σ,R)的元组数量。因为vio(Σi,R,v)的消除可能削减脏元组的数量或者可能带来新的的脏元组,所以|vio(Σ,R)Θvio(Σi,R,v)|≥|vio(Σi,R,v)|或者|vio(Σ,R)Θvio(Σi,R,v)|≤|vio(Σi,R,v)|。|vio(Σi,R,v)|-|vio(Σ,R)Θvio(Σi,R,v)|评估关系表R中违规数量的改变和修正后的实例R',定义其改变量为Δ(vio(Σi,R,v)),违规的效益值计算公式如下:
违规不是孤立的,数据库中的一个函数依赖违规会影响另一个违规。当评估一个函数依赖违规修正所带来的效益时,不仅考虑函数依赖违规本身还要考虑函数依赖违规的演变因素。在公式(1)中评估一个函数依赖违规消除的潜在好处为函数依赖违规所在的关系表中元组消除或增加的比率。给出由约束集合Σ和关系表R创建的相关的D-Graph,假设是相关的违规vio(Σi,R,v)。表示将转变为B-arc后其他边的改变,下面讨论如何通过超图的属性计算公式(1)中的|Δ(vio(Σi,R,v))|。
假设约束Σi和其他约束的模式是或者清除这些函数依赖违规不会影响其他约束中的违规。所以当计算函数依赖违规vio(Σi,R,v)的|Δ(vio(Σi,R,v))|时,仅仅计算和其相关联的元组的数量,即但是边和其他的超边同时是和模式时,是在这两个模式中超边影响的和,如公式(3)。
表示在模式中对超边的影响,表示在模式中对超边的影响。
公式(4)中为在模式中函数依赖违规满足时,转变为B-arc边的改变量。
为在模式中函数依赖违规满足时,转变为B-arc边的改变量。
为在模式中函数依赖违规满足时,转变为B-arc边的改变量。
在公式(4)中当违规满足时,改变量为0。
公式(5)中为在模式中函数依赖违规满足时,转变为B-arc边的改变量。
为在模式中函数依赖违规满足转变为B-arc边的改变量。
在公式(5)中当违规满足时改变量为0。
步骤五、对数据库中函数依赖违规重要度进行排序,根据步骤一得到关系表的C-Graph和D-Graph超图;通过步骤二得到函数依赖间的关系并对函数依赖间的关系进行分类;在步骤三找出关系表的所有函数依赖违规,并对函数依赖违规关系进行分类;在步骤四中根据步骤三的分类计算每一个函数依赖违规的效益值。当对函数依赖违规排序时,首先创建一个列表,当通过步骤四得到函数依赖违规的效益值,根据比较函数依赖违规效益值将违规插入到列表中。
本发明的有益效果是:该方法首先根据C-Graph和D-Graph的定义构建关系表的C-Graph和D-Graph超图,利用这两种超图描述数据库中关系表的属性之间的依赖关系以及属性值之间的依赖关系;再根据给出的函数依赖约束间关系的分类对表中的函数依赖约束关系进行归类;找出函数依赖违规并根据给出的函数依赖违规间关系的分类对函数依赖违规间的关系进行归类;利用公式计算函数依赖违规的效益值;根据计算得到的函数依赖违规效益值对函数依赖违规重要度进行排序。在修复数据库中的函数依赖违规时,找出函数依赖违规中根本的原因,以降低因修复一个函数依赖违规而引起另一些函数依赖违规带来的代价,实用性好。
下面结合附图和具体实施方式对本发明作详细说明。
附图说明
图1是本发明数据库一致性错误的重要度判定方法实施例中关系表的函数依赖图。
图2是本发明数据库一致性错误的重要度判定方法实施例中关系表的ConstraintGraph C-Graph超图。
图3是本发明数据库一致性错误的重要度判定方法实施例中关系表的Data GraphD-Graph超图。
具体实施方式
参照图1-3。本发明数据库一致性错误的重要度判定方法具体步骤如下:
关系表1
关系表2
步骤一、对数据库中的关系表构建C-Graph、D-Graph超图。
以关系表1为例,根据关系表1得到函数依赖A,B→E C,D→E,创建关系表1的C-Graph,如图2所示。根据关系表1和图2创建关系表1的D-Graph,如图3所示。
对数据库中的关系表构建C-Graph、D-Graph超图。C-Graph:给出数据库D上的函数依赖集合Σ,C-Graph GΣ=(V,E):Σi:Xi→Yi,对于Σ中的每一个Σi:Xi→Yi,有一个超边ei∈E,T(ei)=Xi且H(ei)=Yi。D-Graph:根据C-Graph GΣ和关系表R,GR=(V,E):t∈R,,每一个节点Vi∈V被定义为Vi=(Ai,Fi),对于每一个属性Ai∈U的不同的值,都有一个在V中标为(Ai,Fi)的节点。给出C-Graph边EΣ={TΣ(E),HΣ(E)},会产生许多条D-Graph边,每一个D-Graph边Ei∈E被定义为Ei={T(Ei),H(Ei),Ω(Ei)},其中T(Ei).Ai=TΣ(E);H(Ei).Ai=HΣ(E),VEi∈H(Ei),每一个包含所有和相关的元组的IDs,被定义为函数依赖X→Y意味着X的值相同则Y值也必须相同,根据X的值可以将关系表中的数据分为不同的等价类,每一个等价类中,所有成员有相同的X值,其Y值可能相同也可能不同。在D-Graph中有两种超边,一种是只有一个头结点及|H(E)|=1,另一种则是有多个头结点及|H(E)|>1,分别为B-arc边和边。在D-Graph中,如果包含一个或者多个边,意味着至少一个函数依赖等价类的左属性映射到多个等价类的右属性。若图中只包含B-arc边,意味着每一个等价类的左属性仅映射一个等价类的右属性,因此没有函数依赖违规。所以函数依赖违规检查转变为在D-Graph中查找函数依赖违规修复问题转化为转换所有的边为B-arc边,本专利的目标是对所有违反函数依赖的元组集合排序即对函数依赖违规进行排序,因此问题转换为对D-Graph中所有边进行排序。
X、Y:为关系表中的属性,U=X∪Y;
Σ:函数依赖集合;
V:为超图中节点的集合;
E:为超图中超边的集合;
H(e):表示超边的头结点;
T(e):表示超边的尾节点;
t:为表R中的元组;
Ai:是属性名且Ai∈U;
Fi:是t[Ai]的一个值;
步骤二、对函数依赖之间的关系进行归类。
步骤一对函数依赖之间的关系进行了相应的分类,从关系表1中得到函数依赖A,B→E C,D→E。根据图2和步骤一所述函数依赖的分类对A,B→E C,D→E进行归类,函数依赖间的违规属于
对不同函数依赖之间的关系进行分类。假设Σ集合为最小覆盖,Σi:X→Y和Σj:X'→Y',根据函数依赖最小覆盖的定义:
若或者Σi和Σj之间关系分为四类:
Σi和Σj中的属性表示如下:
如果Σi和Σj共享约束左边的一些属性,表示如下:
为
如果约束的右边属性值相同,表示如下:
为
如果约束左边和右边都有共享属性,表示如下:
为
如果Σi和Σj中的属性满足以下:
为
为
为
如果Σi和Σj中的属性满足以下:
为
为
为
Σ:函数依赖集合名称
步骤三、找出违反函数依赖的集合并进行归类。
根据D-Graph超图和函数依赖A,B→E C,D→E,找到五组违反函数依赖的元组集合。在D-Graph超图中得到E1~E5为边,对应于关系表2中的函数依赖违规vio1~vio5。根据关系表1的C-Graph、D-Graph超图得到E1和E4满足转变E1边为B-arc边,E4边将自动转变为B-arc边;E2和E5满足E3和E6满足E3转变为B-arc边会使E6变成
找出关系表中的函数依赖违规并对不同函数依赖违规间的关系进行分类。假设当解决函数依赖违规问题时,仅修正函数依赖约束的右边属性的值。Σi和Σj之间的违规模式分为以下四类:
在和中解决其中一个约束的违规将不会影响另一个约束的违规,定义为模式。
在和中当修正约束的右边属性的值时,将影响所有共享属性所在函数依赖约束的右属性的值,定义为模式。
在和中修改约束右属性的值将影响另一个约束中违规的左属性的值,定义为模式。
在模式中分为以下几种情况:
假设是边且边转变为B-arc影响
假设是边且 边转变为B-arc将自动使转变为B-arc边。
假设是边且 边转变为B-arc将自动使转变为B-arc边。
假设是B-arc边且 是边且.转变边为B-arc将产生新的边
假设是边且 无论转变边为B-arc还是边转变为B-arc都会将新的边
在模式中分为以下几种情况:
表示边从v开始,表示边从v'开始,U=e.T(e)-{v},U'=e'.T(e')-{v'}。
对于每一对e和e',假设 转变为会带来新的边。
对于每一对e和e',假设 转变为会移动中的元组从B-arc边e'到另一条B-arc边e。
对于每一对e和e',假设 ,转变为会移动中的元组从边e'到另一条B-arc边e。
对于每一对e和e',假设|H(e)|>1∧|H(e')|>1∧U=U',若转变为会移动中的元组从边e'到一条新边e;若转变为会移动中的元组从边e'到边e。
对于每一对e和e',U≠U',转变为不影响另一条新边的形成。
步骤四、对函数依赖违规重要度进行评估,计算函数依赖违规的效益值。
根据公式(1)计算得到每一个违规的效益值,其中每一个违规的|Δ(vio(Σi,R,v))|计算根据公式(2)得到,根据公式(3)计算得到公式(2)中的值。
函数依赖违规重要度评估,忽视所有的代价模型,修正函数依赖违规可能给数据库带来一些消极和积极的影响。一个函数依赖违规修正可以给关系表R质量的提高带来一些效益,所以根据每一个违规带来的潜在效益来评估其重要性。用函数依赖违规修正操作前和操作后脏元组的改变数量来评估函数依赖违规的重要性。vio(Σ,R)Θvio(Σi,R,v)表示修正函数依赖违规vio(Σi,R,v)之后的函数依赖违规集合。|vio(Σ,R)|表示包括vio(Σ,R)的元组数量。因为vio(Σi,R,v)的消除可能削减脏元组的数量或者可能带来新的的脏元组,所以|vio(Σ,R)Θvio(Σi,R,v)|≥|vio(Σi,R,v)|或者|vio(Σ,R)Θvio(Σi,R,v)|≤|vio(Σi,R,v)|。|vio(Σi,R,v)|-|vio(Σ,R)Θvio(Σi,R,v)|评估关系表R中违规数量的改变和修正后的实例R',定义其改变量为Δ(vio(Σi,R,v)),违规的效益值计算公式如下:
违规不是孤立的,数据库中的一个函数依赖违规会影响另一个违规。当评估一个函数依赖违规修正所带来的效益时,不仅考虑函数依赖违规本身还要考虑函数依赖违规的演变因素。在公式(1)中评估一个函数依赖违规消除的潜在好处为函数依赖违规所在的关系表中元组消除或增加的比率。给出由约束集合Σ和关系表R创建的相关的D-Graph,假设是相关的违规vio(Σi,R,v)。表示将转变为B-arc后其他边的改变,下面讨论如何通过超图的属性计算公式(1)中的|Δ(vio(Σi,R,v))|。
假设约束Σi和其他约束的模式是或者,清除这些函数依赖违规不会影响其他约束中的违规。所以当计算函数依赖违规vio(Σi,R,v)的|Δ(vio(Σi,R,v))|时,仅仅计算和其相关联的元组的数量,即但是边和其他的超边同时是和模式时,是在这两个模式中超边影响的和,如公式(3)
表示在模式中对超边的影响,表示在模式中对超边的影响。
公式(4)中为在模式中函数依赖违规满足时,转变为B-arc边的改变量。
为在模式中函数依赖违规满足时,转变为B-arc边的改变量。
为在模式中函数依赖违规满足时,转变为B-arc边的改变量。
在公式(4)中当违规满足时,改变量为0。
公式(5)中为在模式中函数依赖违规满足时,转变为B-arc边的改变量。
为在模式中函数依赖违规满足转变为B-arc边的改变量。
在公式(5)中当违规满足时改变量为0。
步骤五、对数据库中函数依赖违规重要度进行排序。
新建一个列表,根据步骤四中得到函数依赖违规的效益值,比较函数依赖违规的效益值,并将其插入列表中。
对数据库中函数依赖违规重要度进行排序,根据步骤一得到关系表的C-Graph和D-Graph超图;通过步骤二得到函数依赖间的关系并对该关系进行分类;在步骤三找出关系表的所有函数依赖违规,并对函数依赖违规关系进行分类;在步骤四中根据步骤三的分类计算每一个函数依赖违规的效益值。当对函数依赖违规排序时,首先创建一个列表,当通过步骤四得到函数依赖违规的效益值,根据比较函数依赖违规效益值将违规插入到列表中。
Claims (1)
1.一种数据库一致性错误的重要度判定方法,其特征在于包括以下步骤:
步骤一、对数据库中的关系表构建C-Graph和D-Graph超图;C-Graph给出数据库D上的函数依赖集合Σ,C-Graph GΣ=(V,E):Σi:Xi→Yi, U=X∪Y;对于Σ中的每一个Σi:Xi→Yi,有一个超边ei∈E,T(ei)=Xi且H(ei)=Yi;D-Graph:根据C-Graph GΣ和关系表R,GR=(V,E):t∈R,每一个节点Vi∈V被定义为Vi=(Ai,Fi),对于每一个属性Ai∈U的不同的值,都有一个在V中标为(Ai,Fi)的节点;给出C-Graph边EΣ={TΣ(E),HΣ(E)},会产生许多条D-Graph边,每一个D-Graph边Ei∈E被定义为Ei={T(Ei),H(Ei),Ω(Ei)},其中T(Ei).Ai=TΣ(E);H(Ei).Ai=HΣ(E),每一个包含所有和相关的元组的IDs,被定义为
函数依赖X→Y意味着X的值相同则Y值也必须相同,根据X的值将关系表中的数据分为不同的等价类,每一个等价类中,所有成员有相同的X值,其Y值相同或者不同;在D-Graph中有两种超边,一种是只有一个头结点及|H(E)|=1,另一种则是有多个头结点及|H(E)|>1,分别为B-arc边和边;在D-Graph中,如果包含一个或者多个边,意味着至少一个函数依赖等价类的左属性映射到多个等价类的右属性;若图中只包含B-arc边,意味着每一个等价类的左属性仅映射一个等价类的右属性,因此没有函数依赖违规;所以函数依赖违规检查转变为在D-Graph中查找函数依赖违规修复问题转化为转换所有的边为B-arc边,其目标是对所有违反函数依赖的元组集合排序即对函数依赖违规进行排序,因此问题转换为对D-Graph中所有边进行排序;
X、Y:为关系表中的属性,U=X∪Y;
Σ:函数依赖集合;
V:为超图中节点的集合;
E:为超图中超边的集合;
H(e):表示超边的头结点;
T(e):表示超边的尾节点;
t:为表R中的元组;
Ai:是属性名且Ai∈U;
Fi:是t[Ai]的一个值;
步骤二、对不同函数依赖之间的关系进行分类;假设Σ集合为最小覆盖,Σi:X→Y和Σj:X'→Y',根据函数依赖最小覆盖的定义:
若或者Σi和Σj之间关系分为四类:
Σi和Σj中的属性表示如下:
如果Σi和Σj共享约束左边的一些属性,表示如下:
为
如果约束的右边属性值相同,表示如下:
为
如果约束左边和右边都有共享属性,表示如下:
为
如果Σi和Σj中的属性满足以下:
为
为
为
如果Σi和Σj中的属性满足以下:
为
为
为
Σ:函数依赖集合名称;
步骤三、找出关系表中的函数依赖违规并对不同函数依赖违规间的关系进行分类;假设当解决函数依赖违规问题时,仅修正函数依赖约束的右边属性的值;Σi和Σj之间的违规模式分为以下四类:
在和中解决其中一个约束的违规将不会影响另一个约束的违规,定义为模式;
在和中当修正约束的右边属性的值时,将影响所有共享属性所在函数依赖约束的右属性的值,定义为模式;
在和中修改约束右属性的值将影响另一个约束中违规的左属性的值,定义为模式;
在模式中分为以下几种情况:
假设是边且边转变为B-arc影响
假设是边且 边转变为B-arc将自动使转变为B-arc边;
假设是边且 边转变为B-arc将自动使转变为B-arc边;
假设是B-arc边且 是边且转变边为B-arc将产生新的边
假设是边且 无论转变边为B-arc还是边转变为B-arc都会将新的边
在模式中分为以下几种情况:
表示边从v开始,表示边从v'开始,U=e.T(e)-{v},U'=e'.T(e')-{v'};
对于每一对e和e',假设 转变为会带来新的边;
对于每一对e和e',假设U=U'∧H(e)=H(e')转变为会移动中的元组从B-arc边e'到另一条B-arc边e;
对于每一对e和e',假设 转变为会移动中的元组从边e'到另一条B-arc边e;
对于每一对e和e',假设|H(e)|>1∧|H(e')|>1∧U=U',
若转变为会移动中的元组从边e'到一条新边e;若转变为会移动中的元组从边e'到边e;
对于每一对e和e',U≠U',转变为不影响另一条新边的形成;
步骤四、函数依赖违规重要度评估,忽视所有的代价模型,修正函数依赖违规可能给数据库带来一些消极和积极的影响;一个函数依赖违规修正可以给关系表R质量的提高带来一些效益,所以根据每一个违规带来的潜在效益来评估其重要性;用函数依赖违规修正操作前和操作后脏元组的改变数量来评估函数依赖违规的重要性;vio(Σ,R)Θvio(Σi,R,v)表示修正函数依赖违规vio(Σi,R,v)之后的函数依赖违规集合;|vio(Σ,R)|表示包括vio(Σ,R)的元组数量;因为vio(Σi,R,v)的消除可能削减脏元组的数量或者可能带来新的的脏元组,所以|vio(Σ,R)Θvio(Σi,R,v)|≥|vio(Σi,R,v)|或者|vio(Σ,R)Θvio(Σi,R,v)|≤|vio(Σi,R,v)|;|vio(Σi,R,v)|-|vio(Σ,R)Θvio(Σi,R,v)|评估关系表R中违规数量的改变和修正后的实例R',定义其改变量为Δ(vio(Σi,R,v)),违规的效益值计算公式如下:
<mrow>
<mi>B</mi>
<mi>e</mi>
<mi>n</mi>
<mi>e</mi>
<mi>f</mi>
<mi>i</mi>
<mi>t</mi>
<mrow>
<mo>(</mo>
<mi>v</mi>
<mi>i</mi>
<mi>o</mi>
<mo>(</mo>
<mrow>
<msub>
<mo>&Sigma;</mo>
<mi>i</mi>
</msub>
<mo>,</mo>
<mi>R</mi>
<mo>,</mo>
<mi>v</mi>
</mrow>
<mo>)</mo>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mfrac>
<mrow>
<mo>|</mo>
<mo>|</mo>
<mi>v</mi>
<mi>i</mi>
<mi>o</mi>
<mrow>
<mo>(</mo>
<mo>&Sigma;</mo>
<mo>,</mo>
<mi>R</mi>
<mo>)</mo>
</mrow>
<mo>|</mo>
<mo>-</mo>
<mo>|</mo>
<mi>v</mi>
<mi>i</mi>
<mi>o</mi>
<mrow>
<mo>(</mo>
<mo>&Sigma;</mo>
<mo>,</mo>
<mi>R</mi>
<mo>)</mo>
</mrow>
<mi>&Theta;</mi>
<mi>v</mi>
<mi>i</mi>
<mi>o</mi>
<mrow>
<mo>(</mo>
<msub>
<mo>&Sigma;</mo>
<mi>i</mi>
</msub>
<mo>,</mo>
<mi>R</mi>
<mo>,</mo>
<mi>v</mi>
<mo>)</mo>
</mrow>
<mo>|</mo>
<mo>|</mo>
</mrow>
<mrow>
<mo>|</mo>
<mi>v</mi>
<mi>i</mi>
<mi>o</mi>
<mrow>
<mo>(</mo>
<mo>&Sigma;</mo>
<mo>,</mo>
<mi>R</mi>
<mo>)</mo>
</mrow>
<mo>|</mo>
</mrow>
</mfrac>
<mo>=</mo>
<mfrac>
<mrow>
<mo>|</mo>
<mi>&Delta;</mi>
<mrow>
<mo>(</mo>
<mi>v</mi>
<mi>i</mi>
<mi>o</mi>
<mo>(</mo>
<mrow>
<msub>
<mo>&Sigma;</mo>
<mi>i</mi>
</msub>
<mo>,</mo>
<mi>R</mi>
<mo>,</mo>
<mi>v</mi>
</mrow>
<mo>)</mo>
<mo>)</mo>
</mrow>
<mo>|</mo>
</mrow>
<mrow>
<mo>|</mo>
<mi>v</mi>
<mi>i</mi>
<mi>o</mi>
<mrow>
<mo>(</mo>
<mo>&Sigma;</mo>
<mo>,</mo>
<mi>R</mi>
<mo>)</mo>
</mrow>
<mo>|</mo>
</mrow>
</mfrac>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>1</mn>
<mo>)</mo>
</mrow>
</mrow>
违规不是孤立的,数据库中的一个函数依赖违规会影响另一个违规;当评估一个函数依赖违规修正所带来的效益时,不仅考虑函数依赖违规本身还要考虑函数依赖违规的演变因素;在公式(1)中评估一个函数依赖违规消除的潜在好处为函数依赖违规所在的关系表中元组消除或增加的比率;给出由约束集合Σ和关系表R创建的相关的D-Graph,假设是相关的违规vio(Σi,R,v);表示将转变为B-arc后其他边的改变,下面讨论如何通过超图的属性计算公式(1)中的|Δ(vio(Σi,R,v))|;
<mrow>
<mo>|</mo>
<mi>&Delta;</mi>
<mrow>
<mo>(</mo>
<mi>v</mi>
<mi>i</mi>
<mi>o</mi>
<mo>(</mo>
<mrow>
<msub>
<mi>&Sigma;</mi>
<mi>i</mi>
</msub>
<mo>,</mo>
<mi>R</mi>
<mo>,</mo>
<mi>v</mi>
</mrow>
<mo>)</mo>
<mo>)</mo>
</mrow>
<mo>|</mo>
<mo>=</mo>
<mo>|</mo>
<msub>
<mi>E</mi>
<msub>
<mi>&Sigma;</mi>
<mi>i</mi>
</msub>
</msub>
<mo>.</mo>
<mi>&Omega;</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>E</mi>
<msub>
<mi>&Sigma;</mi>
<mi>i</mi>
</msub>
</msub>
<mo>)</mo>
</mrow>
<mo>|</mo>
<mo>+</mo>
<mi>E</mi>
<mi>I</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>E</mi>
<msub>
<mi>&Sigma;</mi>
<mi>i</mi>
</msub>
</msub>
<mo>)</mo>
</mrow>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>2</mn>
<mo>)</mo>
</mrow>
</mrow>
假设约束Σi和其他约束的模式是或者清除这些函数依赖违规不会影响其他约束中的违规;所以当计算函数依赖违规vio(Σi,R,v)的|Δ(vio(Σi,R,v))|时,仅仅计算和其相关联的元组的数量,即但是边和其他的超边同时是和模式时,是在这两个模式中超边影响的和,如公式(3);
表示在模式中对超边的影响,表示在模式中对超边的影响;
<mrow>
<mi>E</mi>
<mi>I</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>E</mi>
<msub>
<mi>&Sigma;</mi>
<mi>i</mi>
</msub>
</msub>
<mo>)</mo>
</mrow>
<mo>=</mo>
<msub>
<mi>EI</mi>
<mrow>
<mi>s</mi>
<mi>h</mi>
<mi>a</mi>
<mi>r</mi>
<mi>e</mi>
</mrow>
</msub>
<mrow>
<mo>(</mo>
<msub>
<mi>E</mi>
<msub>
<mi>&Sigma;</mi>
<mi>i</mi>
</msub>
</msub>
<mo>)</mo>
</mrow>
<mo>+</mo>
<msub>
<mi>EI</mi>
<mrow>
<mi>D</mi>
<mi>r</mi>
<mi>i</mi>
<mi>v</mi>
<mi>e</mi>
</mrow>
</msub>
<mrow>
<mo>(</mo>
<msub>
<mi>E</mi>
<msub>
<mi>&Sigma;</mi>
<mi>i</mi>
</msub>
</msub>
<mo>)</mo>
</mrow>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>3</mn>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<mtable>
<mtr>
<mtd>
<mrow>
<msub>
<mi>EI</mi>
<mrow>
<mi>s</mi>
<mi>h</mi>
<mi>a</mi>
<mi>r</mi>
<mi>e</mi>
</mrow>
</msub>
<mrow>
<mo>(</mo>
<msub>
<mi>E</mi>
<msub>
<mo>&Sigma;</mo>
<mi>i</mi>
</msub>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mo>=</mo>
<munderover>
<mo>&Sigma;</mo>
<mi>e</mi>
<mrow>
<mi>e</mi>
<mo>&Element;</mo>
<msub>
<mi>E</mi>
<mrow>
<mi>D</mi>
<mi>e</mi>
<mi>l</mi>
</mrow>
</msub>
</mrow>
</munderover>
<mi>E</mi>
<mi>I</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>E</mi>
<msub>
<mo>&Sigma;</mo>
<mi>i</mi>
</msub>
</msub>
<mo>,</mo>
<mi>e</mi>
<mo>)</mo>
</mrow>
<mo>+</mo>
<munderover>
<mo>&Sigma;</mo>
<mi>e</mi>
<mrow>
<mi>e</mi>
<mo>&Element;</mo>
<msub>
<mi>E</mi>
<mrow>
<mi>N</mi>
<mi>e</mi>
<mi>w</mi>
</mrow>
</msub>
</mrow>
</munderover>
<mi>E</mi>
<mi>I</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>E</mi>
<msub>
<mo>&Sigma;</mo>
<mi>i</mi>
</msub>
</msub>
<mo>,</mo>
<msup>
<mi>e</mi>
<mo>&prime;</mo>
</msup>
<mo>)</mo>
</mrow>
<mo>+</mo>
<munderover>
<mo>&Sigma;</mo>
<mi>e</mi>
<mrow>
<mi>e</mi>
<mo>&Element;</mo>
<msub>
<mi>E</mi>
<mrow>
<mi>C</mi>
<mi>o</mi>
<mi>m</mi>
</mrow>
</msub>
</mrow>
</munderover>
<mi>E</mi>
<mi>I</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>E</mi>
<msub>
<mo>&Sigma;</mo>
<mi>i</mi>
</msub>
</msub>
<mo>,</mo>
<msup>
<mi>e</mi>
<mo>&prime;</mo>
</msup>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>4</mn>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<msub>
<mi>EI</mi>
<mrow>
<mi>D</mi>
<mi>r</mi>
<mi>i</mi>
<mi>v</mi>
<mi>e</mi>
</mrow>
</msub>
<mrow>
<mo>(</mo>
<msub>
<mi>E</mi>
<msub>
<mi>&Sigma;</mi>
<mi>i</mi>
</msub>
</msub>
<mo>)</mo>
</mrow>
<mo>=</mo>
<msub>
<mi>EI</mi>
<mrow>
<mi>N</mi>
<mi>e</mi>
<mi>w</mi>
</mrow>
</msub>
<mrow>
<mo>(</mo>
<msub>
<mi>E</mi>
<msub>
<mi>&Sigma;</mi>
<mi>i</mi>
</msub>
</msub>
<mo>,</mo>
<mi>v</mi>
<mo>,</mo>
<msup>
<mi>v</mi>
<mo>&prime;</mo>
</msup>
<mo>)</mo>
</mrow>
<mo>+</mo>
<msub>
<mi>EI</mi>
<mrow>
<mi>D</mi>
<mi>e</mi>
<mi>l</mi>
</mrow>
</msub>
<mrow>
<mo>(</mo>
<msub>
<mi>E</mi>
<msub>
<mi>&Sigma;</mi>
<mi>i</mi>
</msub>
</msub>
<mo>,</mo>
<mi>v</mi>
<mo>,</mo>
<msup>
<mi>v</mi>
<mo>&prime;</mo>
</msup>
<mo>)</mo>
</mrow>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>5</mn>
<mo>)</mo>
</mrow>
</mrow>
公式(4)中为在模式中函数依赖违规满足时,转变为B-arc边的改变量;
为在模式中函数依赖违规满足时,转变为B-arc边的改变量;
为在模式中函数依赖违规满足时,转变为B-arc边的改变量;
在公式(4)中当违规满足时,改变量为0;
公式(5)中为在模式中函数依赖违规满足时,转变为B-arc边的改变量;
为在模式中函数依赖违规满足转变为B-arc边的改变量;
在公式(5)中当违规满足时改变量为0;
步骤五、对数据库中函数依赖违规重要度进行排序,根据步骤一得到关系表的C-Graph和D-Graph超图;通过步骤二得到函数依赖间的关系并对函数依赖间的关系进行分类;在步骤三找出关系表的所有函数依赖违规,并对函数依赖违规关系进行分类;在步骤四中根据步骤三的分类计算每一个函数依赖违规的效益值;当对函数依赖违规排序时,首先创建一个列表,当通过步骤四得到函数依赖违规的效益值,根据比较函数依赖违规效益值将违规插入到列表中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710981214.5A CN107633099B (zh) | 2017-10-20 | 2017-10-20 | 数据库一致性错误的重要度判定方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710981214.5A CN107633099B (zh) | 2017-10-20 | 2017-10-20 | 数据库一致性错误的重要度判定方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107633099A true CN107633099A (zh) | 2018-01-26 |
CN107633099B CN107633099B (zh) | 2021-02-02 |
Family
ID=61104503
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710981214.5A Active CN107633099B (zh) | 2017-10-20 | 2017-10-20 | 数据库一致性错误的重要度判定方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107633099B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109669932A (zh) * | 2018-10-22 | 2019-04-23 | 国网上海市电力公司 | 一种基于次序依赖的电力数据集修复方法 |
CN109885561A (zh) * | 2019-01-03 | 2019-06-14 | 中国人民解放军国防科技大学 | 一种基于最大依赖集和属性相关性不一致数据清洗方法 |
CN110069480A (zh) * | 2019-03-04 | 2019-07-30 | 广东恒睿科技有限公司 | 一种并行数据清洗方法 |
WO2020024887A1 (en) * | 2018-07-30 | 2020-02-06 | Huawei Technologies Co., Ltd. | Graph functional dependency checking |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103473400A (zh) * | 2013-08-27 | 2013-12-25 | 北京航空航天大学 | 基于层次依赖建模的软件fmea方法 |
CN106777127A (zh) * | 2016-12-16 | 2017-05-31 | 中山大学 | 基于知识图谱的个性化学习过程的自动生成方法及系统 |
US20170212755A1 (en) * | 2016-01-22 | 2017-07-27 | Hcl Technologies Limited | System and method for computing a criticality metric of a unit of source code |
-
2017
- 2017-10-20 CN CN201710981214.5A patent/CN107633099B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103473400A (zh) * | 2013-08-27 | 2013-12-25 | 北京航空航天大学 | 基于层次依赖建模的软件fmea方法 |
US20170212755A1 (en) * | 2016-01-22 | 2017-07-27 | Hcl Technologies Limited | System and method for computing a criticality metric of a unit of source code |
CN106777127A (zh) * | 2016-12-16 | 2017-05-31 | 中山大学 | 基于知识图谱的个性化学习过程的自动生成方法及系统 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020024887A1 (en) * | 2018-07-30 | 2020-02-06 | Huawei Technologies Co., Ltd. | Graph functional dependency checking |
US11080266B2 (en) | 2018-07-30 | 2021-08-03 | Futurewei Technologies, Inc. | Graph functional dependency checking |
CN109669932A (zh) * | 2018-10-22 | 2019-04-23 | 国网上海市电力公司 | 一种基于次序依赖的电力数据集修复方法 |
CN109669932B (zh) * | 2018-10-22 | 2023-06-30 | 国网上海市电力公司 | 一种基于次序依赖的电力数据集修复方法 |
CN109885561A (zh) * | 2019-01-03 | 2019-06-14 | 中国人民解放军国防科技大学 | 一种基于最大依赖集和属性相关性不一致数据清洗方法 |
CN110069480A (zh) * | 2019-03-04 | 2019-07-30 | 广东恒睿科技有限公司 | 一种并行数据清洗方法 |
CN110069480B (zh) * | 2019-03-04 | 2022-06-24 | 广东恒睿科技有限公司 | 一种并行数据清洗方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107633099B (zh) | 2021-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107633099B (zh) | 数据库一致性错误的重要度判定方法 | |
Wątróbski et al. | Generalised framework for multi-criteria method selection | |
Bohannon et al. | A cost-based model and effective heuristic for repairing constraints by value modification | |
CN103782309B (zh) | 用于机器学习分类器的自动数据清除 | |
Berman et al. | Lp-testing | |
Ma et al. | A sustainable modular product design approach with key components and uncertain end-of-life strategy consideration | |
Hutchinson | Metrics on terms and clauses | |
US20200394201A1 (en) | Automatic modeling method and classifier for olap data model | |
US20040181527A1 (en) | Robust system for interactively learning a string similarity measurement | |
CN102456050B (zh) | 从网页中抽取数据的方法和装置 | |
Bahmani et al. | Automatic database normalization and primary key generation | |
Larson et al. | Geometric set theory | |
CN108345602B (zh) | 数据多维建模系统及数据多维建模方法 | |
CN114281809A (zh) | 一种多源异构数据清洗方法及装置 | |
Jadalla et al. | PDE4Java: Plagiarism Detection Engine for Java source code: a clustering approach | |
US7783657B2 (en) | Search authoring metrics and debugging | |
Gottlob | Computing cores for data exchange: New algorithms and practical solutions | |
Kimelfeld et al. | Counting and enumerating preferred database repairs | |
CN109102138B (zh) | 工作流网检验的异常片段提取方法、可读存储介质及终端 | |
CN110083815B (zh) | 一种同义变量识别方法和系统 | |
CN109492712A (zh) | 建立互联网金融风控模型的方法 | |
CN115081515A (zh) | 能效评价模型构建方法、装置、终端及存储介质 | |
CN108776697B (zh) | 一种基于谓词的多源数据集清洗方法 | |
CN101714142B (zh) | 文件群集的合并方法 | |
Parisi et al. | Inconsistency measures for relational databases |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |