# Reflexivity axiom for inferring functional dependencies

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)

1. Reflexivity: If X ⊆ Y, then Y → X
2. Augmentation: If X → Y, then XZ → YZ for any Z
3. 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:

1. a → b
2. 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?

P.S. Not sure what tag I should use for this question, feel free to change it and remove this line.

• This should probably go on the Mathematics site. It's really a math question, not a database question. I think. – Jon Seigel Jan 22 '13 at 18:47
• @JonSeigel Isn't it used to remove redundancy? If it is then database administrators should be able to use it (if not using other methods). – Templar Jan 22 '13 at 19:11
• I'm pretty sure questions about normalization are on-topic at stackoverflow.com. That's not to say they're off-topic here, but I think it's expecting a bit much for novice web developers to look on the mathematics site for answers to questions about normalization. – Mike Sherrill 'Cat Recall' Jan 23 '13 at 16:19

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

• ah now i see why it's called trivial :D – Templar Jan 23 '13 at 16:49

"What does it really mean that some attribute is a subset of some other attribute?"

It means nothing. Functional dependencies exist between SETS of attributes.

Whenever the treatment is supposed to be formal and precise (as in, e.g., when stating the very definition of the axioms), that's how X,Y and Z are supposed to be interpreted.

Unfortunately, people tend to always write down concrete examples of FD's without making the SET property explicit. As in, e.g., AB->C, where A,B and C are attributes. Formally, that should actually be {A B} -> {C}, but those braces don't add very much.

And your formulation of the augmentation axiom is incorrect precisely on that count. If X,Y and Z are sets of attributes, then the only correct formulation of the augmentation axiom is

X -> Y ===> (X UNION Z) -> (Y UNION Z)

The reflexivity axiom provides a formal definition of what it means to be a trivial FD. The various normal forms are defined in terms of nontrivial FDs, hence it must be pinned down what that means exactly. The reflexivity axiom does that.

• Also, if I recall my college math correctly, one of the reasons for using capital letters in this context is that they're supposed to represent sets themselves. So loosely "A->B" means "the set of attributes named 'A' determines the set of attributes named 'B'". I think this is just a slightly different way of saying what you just said. – Mike Sherrill 'Cat Recall' Jan 23 '13 at 16:10
• well yeah it was written that XZ actually means X union Z but it's usually ignored – Templar Jan 23 '13 at 16:47