# Re: BCNF: superkey or candidate key ?

From: Bob Badour <bbadour_at_pei.sympatico.ca>

Date: Mon, 25 Sep 2006 13:41:56 GMT

Message-ID: <E0RRg.38697$9u.331883_at_ursa-nb00s0.nbnet.nb.ca>

>>>>"Database In Depth", C.J. Date, May 2005, p.140:

Date: Mon, 25 Sep 2006 13:41:56 GMT

Message-ID: <E0RRg.38697$9u.331883_at_ursa-nb00s0.nbnet.nb.ca>

Jan Hidders wrote:

> Bob Badour wrote: >

*>>Jan Hidders wrote:**>>**>>>masong_at_sbcglobal.net wrote:**>>>**>>>*>>>>"Database In Depth", C.J. Date, May 2005, p.140:

*>>>>Relvar R is in BCNF if and only if, for every nontrivial FD A -> B satisfied**>>>>by R, A is a superkey for R.**>>>>**>>>>"Database Modeling and Design", 4th Ed., Torey/Lightstone/Nadeau, Sep 2005,**>>>>p.115:**>>>>A table R is in Boyce-Codd normal form (BCNF) if for every nontrivial FD X**>>>>-> A, X is a superkey.**>>>>**>>>>"Fundamentals of Database Systems", 5th Ed., Elmasri/Navathe, May 2006,**>>>>p.368:**>>>>A relation schema R is in BCNF if whenever a nontrivial functional**>>>>dependency X -> A holds in R, then X is a superkey of R.**>>>**>>>**>>>Of course, those are the standard definitions, but you claimed that you**>>>had seen one that said:**>>>**>>>"Previously he (and others) defined it where A had to be a candidate**>>>key**>>>(which is irreducible)."**>>>**>>>So a definition like: A relation schema R is in BCNF if whenever a**>>>nontrivial functional**>>>dependency A -> X holds in R, then A is a candidate key of R.**>>>**>>>That would not be equivalent to the standard definitions, so I wondered**>>>where you had seen such a definition.**>>**>>If A is a candidate key, then a functional dependency of the form B -> X**>>would hold where B is any superkey of A. Would it not?*> > Yes, it would. But note that the definition above requires that *for > all* non-trivial dependencies of the form A->X it holds that A is a > candidate key.

Exactly, which was my point. Stating it as a candidate key generally ceates a contradiction unless we accept the unreasonable limitation that every candidate key comprises a superset of the relation's attributes. Hence the familiar definition in terms of superkeys instead. Received on Mon Sep 25 2006 - 15:41:56 CEST