As you know there are three Armstrong's Axioms for inferring all the functional dependencies on a relational database. (X, Y and Z are set of attributes)
- Reflexivity: If X ⊆ Y, then Y → X
- Augmentation: If X → Y, then XZ → YZ for any Z
- Transitivity: if X → Y and Y → Z, then X → Z
I understand the augmentation and transitivity for example if we had such schema:
SOME_SCHEMA(a, b, c, d)
with such functional dependencies:
- a → b
- b → c
By using augmentation we could get ac → bc or by using transitivity we could get a → c and much more, however I am not sure how to infer more functional dependencies using reflexivity axiom? What does it really mean that some attribute is a subset of some other attribute?
Could you show me an example using my schema or creating your own, please?
Thank you in advance!
P.S. Not sure what tag I should use for this question, feel free to change it and remove this line.
Best Answer
ab → a means that if two tuples in a relation have the same values for the attribute a then they have the same values for both attributes a and b. This seems trivial but it cannot be deduced from the Augmentation axiom and Transitivity axiom. So if you have a relation with attributes a,b,c you can deduce functional dependencies like
a→a
ab→a
abc→ac
without knowing any additional functional dependency on abc