Functional Dependency
Definition
A relation instance r(R)
satsifies a dependency X -> Y
if
- For all t, u in r, t[X] = u[X] => t[Y] = u[Y]
.
That is, if two tuples in r
agree in their values for the set of attributes X
, then they agree in their values for the set of attributes Y
.
Y
is said to be functionally dependent on X
.
Inference Rules
- Reflexivity:
X -> X
. - Augmentation:
X -> Y => XZ -> YZ
. - Transitivity:
X -> Y, Y -> Z => X -> Z
. - Additivity:
X -> Y, X -> Z => X -> YZ
.- Note: this is only for the right hand side.
- Projectivity/Decomposition:
X -> YZ => X -> Y, X -> Z
. - Pseudotransitvitiy:
X -> Y, YZ -> W => XZ -> W