I am a bit confused with the definition of 3NF.
According to Wikipedia:
The third normal form (3NF) is a normal form used in database normalization. 3NF was originally defined by E.F. Codd in 1971. Codd's definition states that a table is in 3NF if and only if both of the following conditions hold:
- The relation R (table) is in second normal form (2NF)
- Every non-prime attribute of R is non-transitively dependent on every superkey of R.
But, according to book the Database System Concepts 6th Edition by Abraham Silberschatz, Henry F.Korth, S.Sudarshan:
A relation schema R is in third normal form (3NF) with respect to a set F of functional dependencies if, for all functional dependencies in F+ of the form α → β, where α ⊆ R and β ⊆ R, at least one of the following holds:
- α → β is a trivial functional dependency.
- α is a superkey for R.
- Each attribute A in β − α is contained in a candidate key for R.
Also, according to Database Systems 6th Edition by Ramez Elmasri Shamkant B. Navathe:
A relation schema R is in third normal form (3NF) if, whenever a nontrivial functional dependency X→A holds in R, either (a) X is a superkey of R, or (b) A is a prime attribute of R.
After reading the above definitions, I am not sure if a relation schema has to be in 2NF in order to be in 3NF. Also, does a relation schema have to be in 3NF in order to be in BCNF?