Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>The subtle difference is that 3NF makes a distinction between key and non-key attributes (also called <em>non-prime</em> attributes) whereas BCNF does not.</p> <p>This is best explained using <a href="http://www.cs.ucla.edu/~zaniolo/papers/tods82b.pdf" rel="noreferrer">Zaniolo's definition</a> of 3NF, which is equivalent to Codd's:</p> <blockquote> <p>A relation, R, is in 3NF iff for every nontrivial FD (X->A) satisfied by R at least ONE of the following conditions is true:</p> <p>(a) X is a superkey for R, <strong>or</strong></p> <p>(b) A is a key attribute for R</p> </blockquote> <p>BCNF requires (a) but doesn't treat (b) as a special case of its own. In other words BCNF requires that every nontrivial determinant is a superkey even its dependent attributes happen to be part of a key.</p> <blockquote> <p>A relation, R, is in BCNF iff for every nontrivial FD (X->A) satisfied by R the following condition is true:</p> <p>(a) X is a superkey for R</p> </blockquote> <p>BCNF is therefore more strict.</p> <p>The difference is so subtle that what many people informally describe as 3NF is actually BCNF. For example, you stated here that 3NF means "data depends on the key[s]... and nothing but the key[s]", but that is really an informal description of BCNF and not 3NF. 3NF could more accurately be described as "<em>non-key data</em> depends on the keys... and nothing but the keys".</p> <p>You also stated:</p> <blockquote> <p>the 3NF quote explicitly says "nothing but the key" meaning that all attributes depend solely on the primary key.</p> </blockquote> <p>That's an oversimplification. 3NF and BCNF and all the Normal Forms are concerned with <em>all</em> candidate keys and/or superkeys, not just one "primary" key.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload