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.