如何找到函数依赖的无关属性?
How to find the extraneous attributes of functional dependency?
我有一个 r(A,B,C,D,E,F)
满足的关系:
AB->C
C->A
BC->D
ACD->B
BE->C
CE->FA
CF->BD
D->EF
我需要找到这个关系的规范覆盖?
我知道找到规范封面的算法。然而在算法中,我们需要找到无关的属性。有没有算法可以找到无关的属性?
查找无关属性的算法如下:
let F the initial set of functional dependencies
assume that each dependency F is in the form A1, A2, ..., An -> B
for each functional dependency A1, A2, ..., An -> B in F with n > 1
for each Ai
if B ∈ ({A1, A2, ..., An} - Ai)+
then Ai is an extraneous attribute and must be removed from the left hand side
请注意,剩余属性的闭包必须通过考虑所有 F 的依赖关系来计算,包括正在检查的依赖关系(这可能违反直觉)。
例如,将此算法应用于您的示例,从依赖项开始:
{ A B → C
A C D → B
B C → D
B E → C
C → A
C E → A
C E → F
C F → B
C F → D
D → E
D → F }
在A C D → B
中,A
自{C D}+ = (A B C D E F)
以来是外来的,而在C E → A
中,E
自{C}+ = (A C)
以来是外来的。
我有一个 r(A,B,C,D,E,F)
满足的关系:
AB->C
C->A
BC->D
ACD->B
BE->C
CE->FA
CF->BD
D->EF
我需要找到这个关系的规范覆盖?
我知道找到规范封面的算法。然而在算法中,我们需要找到无关的属性。有没有算法可以找到无关的属性?
查找无关属性的算法如下:
let F the initial set of functional dependencies
assume that each dependency F is in the form A1, A2, ..., An -> B
for each functional dependency A1, A2, ..., An -> B in F with n > 1
for each Ai
if B ∈ ({A1, A2, ..., An} - Ai)+
then Ai is an extraneous attribute and must be removed from the left hand side
请注意,剩余属性的闭包必须通过考虑所有 F 的依赖关系来计算,包括正在检查的依赖关系(这可能违反直觉)。
例如,将此算法应用于您的示例,从依赖项开始:
{ A B → C
A C D → B
B C → D
B E → C
C → A
C E → A
C E → F
C F → B
C F → D
D → E
D → F }
在A C D → B
中,A
自{C D}+ = (A B C D E F)
以来是外来的,而在C E → A
中,E
自{C}+ = (A C)
以来是外来的。