A Redundant Functional Dependency is a dependency that can be removed from the set of functional dependencies without affecting the overall closure of the set.
In simple words, a redundant FD is unnecessary because it can be derived from other functional dependencies.
A β B
B β C
A β C
F = { A β B, B β C, A β C }
Check if A β C is redundant:
Remove A β C and compute closure of A:
AβΊ = {A, B, C}
Since we still get C using A β B and B β C, the dependency A β C is redundant.
Final Set: A β B, B β C
Is redundant FD same as extraneous attribute?
Given:
F = { X β YZ, ZW β P, P β Z, W β XPQ, XYQ β YW, WQ β YZ }
Find redundant functional dependencies.
Remove it and compute XβΊ:
XβΊ = {X}
Cannot derive Y or Z β NOT redundant β
Remove it and compute (ZW)βΊ:
ZWβΊ = {Z, W}
Apply W β XPQ:
ZWβΊ = {Z, W, X, P, Q}
We can derive P β ZW β P is REDUNDANT β
Remove it and compute PβΊ:
PβΊ = {P}
Cannot derive Z β NOT redundant β
No other FD gives XPQ β NOT redundant β
Remove it and compute (XYQ)βΊ:
XYQβΊ = {X, Y, Q}
Apply X β YZ:
XYQβΊ = {X, Y, Q, Z}
Cannot derive W β NOT redundant β
Remove it and compute (WQ)βΊ:
WQβΊ = {W, Q}
Apply dependencies:
WQβΊ = {W, Q, X, P, Z, Y}
We can derive both Y and Z β WQ β YZ is REDUNDANT β
Redundant Functional Dependencies:
ZW β P
WQ β YZ
Final Reduced Set:
F = { X β YZ, P β Z, W β XPQ, XYQ β YW }
An Extraneous Attribute is an attribute that is not required in a functional dependency. If removing an attribute does not change the meaning of the dependency, then it is called extraneous.
In simple words, extraneous attributes are unnecessary parts of a functional dependency. Removing them helps simplify the database design and is an important step in Minimal Cover and Normalization.
AB β C
A β C
An attribute in the left-hand side is extraneous if it can be removed and the dependency still holds.
AB β C
A β C
Since A alone determines C, B is extraneous.
A β C
If multiple attributes exist on the right side, we check them individually.
A β BC
Split into:
A β B
A β C
Then check if any dependency is unnecessary.
AB β C
A β C
C β D
Check AB β C:
AβΊ = {A, C, D}
Since A alone determines C, B is extraneous.
A β C
C β D
Does removing an attribute always change dependency?
Given Functional Dependencies:
F = { X β Z, XY β WP, XY β ZWQ, XZ β R }
Identify extraneous attributes and simplify the functional dependencies.
Single attribute on LHS β nothing to remove β
Check if X is extraneous:
Remove X β check YβΊ
YβΊ = {Y}
Y cannot determine W or P β X is NOT extraneous β
Check if Y is extraneous:
Remove Y β check XβΊ
XβΊ = {X, Z, R}
X cannot determine W or P β Y is NOT extraneous β
Split RHS:
XY β Z
XY β W
XY β Q
Check XY β Z:
Since X β Z already exists
π Z is redundant on RHS β
Check XY β W:
From XY β WP, we already get W
π W is redundant β
Check XY β Q:
No other FD gives Q β keep it β
Check if Z is extraneous:
Remove Z β check XβΊ
XβΊ = {X, Z, R}
Since X already gives R β Z is extraneous β
X β R
Remaining dependencies:
X β Z
XY β WP
XY β Q
X β R
Extraneous removed:
| Extraneous Attribute | Redundant FD |
|---|---|
| Removes part of FD | Removes whole FD |
| Used in canonical cover | Used in simplification |
| Check attribute removal | Check FD derivation |