I have a relation:
R4 = {{T,U,V}, {T → U, U → T, T → V}}
I know from looking at the answer key that this relation is in BCNF.
I'm going through the process of rigorously determining what normal form the relationship adheres to. It's clear to me why the relationship is in 1NF and 2NF, and if I assume it's in 3NF, BCNF follows easily.
However, the definition of 3NF states:
Every non-prime attribute is non-transitively dependent on every candidate key in the table.
But, as far as I can tell, both {T}
and {U}
are candidate keys of the table, and {V}
is thus transitively dependent on {U}
.
There is an alternate definition of 3NF available on wikipedia:
A 3NF definition that is equivalent to Codd's, but expressed differently, was given by Carlo Zaniolo in 1982. This definition states that a table is in 3NF if and only if, for each of its functional dependencies X → A, at least one of the following conditions holds:
- X contains A (that is, X → A is trivial functional dependency)
- X is a superkey
- Every element of A-X, the set difference between A and X, is a prime attribute (i.e., each column in A-X is contained in some candidate key)
And the relation is clearly in 3NF by this definition (all of the functional dependencies are covered by "X is a superkey").
So why the discrepancy? How am I misapplying the definition? Please don't give me shortcuts that give me the answer in a way I don't want, unless you also help me understand why my application of 3NF (as described) is inaccurate.