3NF: Isn't "the key, the whole key, and nothing but the key" a misleading definition?
The classic mnemonic for 3NF says non-key attributes must depend solely on the candidate key — "the key, the whole key, and nothing but the key." The implication is that 3NF eliminates all transitive dependencies, so no non-key column depends on another non-key column.
But the formal definition has a loophole: in a functional dependency X → A, 3NF is satisfied if A is a prime attribute (i.e., part of some candidate key) — even if X itself is non-prime (not part of any candidate key).
This means 3NF technically permits a scenario where a prime attribute depends on a non-prime attribute — which is a non-key attribute depending on another non-key attribute. That seems to directly contradict the "nothing but the key" promise.
So doesn't the mnemonic break down here? it should rather be applied for BCNF which has the requirement that every determinant (X) in any non-trivial FD must be a superkey