Re: What are the differences between the terms, CANDIDATE KEY, PRIMARY KEY, SUPER KEY, COMPOSITE KEY?

From: Marshall Spight <>
Date: 25 Feb 2006 08:06:32 -0800
Message-ID: <>

Jan Hidders wrote:
> Marshall Spight wrote:
> >
> > But it strikes me that there is an air of triviality in any FD where
> > some specific attribute appears both on the left side *and* on the
> > right side. We can apply decomposation to AB->BC and get
> >
> > 1) AB->B
> > 2) AB->C
> >
> > 1) is trivial. AB->BC doesn't say anything that isn't said by AB->C.
> >
> > So if we describe a key as being an FD X->Y, where Y is the
> > header, then we necessarily (unless X is empty) have attributes
> > that appear in both X and Y. It strikes me that this could be reduced
> > by replacing Y with (header - X).
> Correct. But restricting yourself to only non-intersecting FDs has also
> its problems. Armstrong's rules would, for example, no longer be complete.


Does this mean a canonical form for a key is impossible or undesirable?

I ask because I am working on software for working with relations. Early designs had special purpose support for keys, foreign keys, etc., but in later revisions this has been dropped in favor of a more general constraint engine. But one still needs to require a minimum of one key, and I think some amount of special key-related code is useful; one could automatically suggest normalizations, for example. This would be facilitated by having a canonical form for keys.

My suspicion is that one won't be able to derive Armstrong's axioms from more general axioms of constraint propogation.

Also, I seem to recall from somewhere the result that while a normal form exists for FDs, that normal form is not guaranteed to be unique, or something like that. Anyone?

Marshall Received on Sat Feb 25 2006 - 17:06:32 CET

Original text of this message