• You can't exclude something from 3NF just because some attribute is transitively dependent on a key. Suppose A and B are primarycandidate keys and x is a non-prime attribute; then it is certainly true that A -> B, because A is a candidate key; it is equally certain that B -> x because B is a candidate key; so A ->B and B-> x, which is the definition of "x is transitively dependent on A". Disallowing all transitive dependencies (as do several authors who write about normalisation but clearly don't understand it) in 3NF is not sensible, it would imply that no 3NF relation which has any non-prime attributes has two or more candidate keys, which is just plain nonsense, you can only disallow nontrivial transitive dependencies.

    Read something reliable. I will shamelessly plug my 3NF article at SQL Server central[/url]. And my 2NF article too[/url], although some people seem to have a problem understanding the first sentence (which I should rewrite sometime, as a hard to understand first sentence is a serious fault), as that was what your question was about.

    Tom