Definition: If the function dependency set F satisfies the following conditions, F is called the minimum function dependency set or the minimum overwrite.
The right part of any function that is dependent on the ①f contains only one property;
There is not such a function dependent x→a in ②f, which makes F and f-{x→a} equivalent;
③f does not exist in a function dependent x→a,x has a true subset Z makes f-{x→a}∪{z→a} and F equivalent.
or expressed as:
Minimum dependency set: If the function set F satisfies the following three conditions:
The right part of each function dependency in ①f is a single attribute;
Any function in ②f is dependent on x→a, and its f-{x→a} and F are not equivalent;
Any function in the ③f relies on x→a,z as a subset of X. (F-{x→a}∪{z→a} and F are not equal prices.) Then the f is called the minimum function dependency set, which is recorded as Fmin.
Algorithm: Calculates the minimum function dependency set.
Enter a function dependency set
An equivalent minimum function-dependent set g of output F
Step: ① uses the law of decomposition to make any function in F dependent on the right part containing only one attribute;
② removes excess function dependencies: Starting from the first function relies on x→y to remove it from the F, and then in the rest of the function depends on the closure of X x+, see if x+ contains Y, if, then remove x→y; Until the redundant function dependencies are not found;
③ Remove the dependencies on the left part of the property. One by one checks that the function relies on the left part of a property that is not single. For example Xy→a, if Y is redundant, then substituting x→a for xy→a is equivalent. If a belongs to (x) +, then y is an extra attribute and can be removed.
For example: Known relational schema 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}, the minimum function dependency set for f is obtained.
Solution 1: Use the algorithm to solve, make it meet three conditions
① uses the decomposition rule to turn all function dependencies into a function dependency of a single property on the right, F: f={ab→c,d→e,d→g,c→a,be→c,bc→d,cg→b,cg→d,acd→b,ce→a,ce→g}
② Remove excess function dependencies in F
A Set Ab→c as redundant function dependencies, then remove Ab→c, get: F1={d→e,d→g,c→a,be→c,bc→d,cg→b,cg→d,acd→b,ce→a,ce→g}
Calculation (AB) f1+: Set X (0) =ab
Calculates x (1): Scans the function dependencies in the F1, finds the function dependencies of the left part AB or AB, because such a function dependency cannot be found. So there is x (1) =x (0) =ab, and the algorithm terminates.
(AB) f1+= AB does not contain C, so ab→c is not a redundant function dependency and cannot be removed from the F1.
b Set Cg→b as redundant function dependencies, then remove Cg→b, get: F2={ab→c,d→e,d→g,c→a,be→c,bc→d,cg→d,acd→b,ce→a,ce→g}
Computing (CG) f2+: Set X (0) =CG
Compute x (1): Scan F2 function dependencies, find the left part of the CG or CG subset of functional dependencies, get a c→a function dependency. So there is x (1) =x (0) ∪A=CGA=ACG.
Compute x (2): Scan the function dependencies in the F2, find the function dependencies of the left part ACG or ACG subset, and get a cg→d function dependency. So there is X (2) =x (1) ∪d=acdg.
Compute x (3): Scan the function dependencies in the F2, find the function dependencies of the left part of the ACDG or ACDG subset, and get two acd→b and d→e function dependencies. So there is x (3) =x (2) ∪be=abcdeg, because X (3) =u, the algorithm terminates.
(CG) f2+=abcdeg contains B, so cg→b is a redundant function dependency, removed from the F2.
C Set Cg→d as redundant function dependencies, then remove Cg→d, get: F3={ab→c,d→e,d→g,c→a,be→c,bc→d,acd→b,ce→a,ce→g}
Computing (CG) f3+: Set X (0) =CG
Compute x (1): Scan F3 function dependencies, find the left part of the CG or CG subset of functional dependencies, get a c→a function dependency. So there is x (1) =x (0) ∪A=CGA=ACG.
Computes X (2): Scans the function dependencies in the F3, finds the function dependencies of the left part of the ACG or ACG subset, because such a function dependency cannot be found. So there is X (2) =x (1), and the algorithm terminates. (CG) F3+=ACG.
(CG) F3+=ACG does not contain D, so cg→d is not a redundant function dependency and cannot be removed from the F3.
D Set Ce→a as redundant function dependencies, then remove Ce→a, get: F4={ab→c,d→e,d→g,c→a,be→c,bc→d,cg→d,acd→b,ce→g}
Computing (CG) f4+: Set X (0) =ce
Compute x (1): Scan F4 function dependencies, find the left part of the CE or CE subset of functional dependencies, get a c→a function dependency. So there is x (1) =x (0) ∪a=cea=ace.
Compute x (2): Scan F4 function dependencies, find the left part of the Ace or ace subset of functional dependencies, get a ce→g function dependency. So there is X (2) =x (1) ∪g=aceg.
Compute x (3): Scan the function dependencies in the F4, find the function dependencies of the left part Aceg or ACEG subset, and get a cg→d function dependency. So there is x (3) =x (2) ∪d=acdeg.
Compute x (4): Scan the function dependencies in the F4, find the function dependencies of the left part acdeg or acdeg subset, and get a acd→b function dependency. So there is x (4) =x (3) ∪b=abcdeg. Because X (4) =u, the algorithm terminates.
(CE) f4+=abcdeg contains a, so ce→a is a redundant function dependency, removed from the F4.
③ remove the extra attributes in the F4 that depend on the left (only function dependencies on the left is not a single property) due to C→a, the function relies on the attribute a in acd→b to be redundant and remove a to cd→b.
So the minimum function dependency set is: F={ab→c,d→e,d→g,c→a,be→c,bc→d,cg→d,cd→b,ce→g}