I like to work in a different order. First determine what the candidate identifiers are. I say that the set of candidate identifiers is [[A]] (that is, one candidate identifier and that one candidate identifier is made up of one attribute A).
Is [A] a superkey? If we know A, then we know B, and if we know B, then we know C. Yes.
Is a subset of [A] a superkey? Since there is no proper, non-empty subset of [A], it's impossible to have another superkey. So we know that [A] is a candidate identifier.
Is there another candidate identifier? Let's take them one at a time:
- B
- If you only know B, you don't know A since B only determines C.
- C
- If you only know C, you don't know anything else since C doesn't determine anything (except for itself, of course).
- B, C
- You still don't know A.
- A, B
- This is not a candidate identifier since a subset (i.e., [A]) is a superkey.
- A, C
- Same.
- A, B, C
- Same.
Thus, the set of all candidate identifiers is [[A]].
So, the only possible primary identifier is [A].
The set of all superkeys are those subsets of [A, B, C] that contain a candidate identifier. In this case that would be [[A], [A, B], [A, C], [A, B, C]].
Return to first normal form document.