Re: Base Normal Form

From: Jan Hidders <jan.hidders_at_REMOVETHIS.pandora.be>
Date: Wed, 06 Jul 2005 07:12:16 GMT
Message-ID: <kvLye.138309$%i.7212102_at_phobos.telenet-ops.be>


David Cressey wrote:

> "Jan Hidders" <jan.hidders_at_REMOVETHIS.pandora.be> wrote in message 
> news:shgye.137258$4T6.7275581_at_phobos.telenet-ops.be...
> 

>> David Cressey wrote:
>>
>>> I'd like to suggest a new Normal Form definition, one that I'm
>>> calling Base Normal Form, for lack of a better term.

>>
>> In some texts I've seen it called the UNF (unnormalized normal
>> form) or the NFNF (non first normal form). To make things
>> confusing, it is also equivalent with Chris Date's definition of
>> 1NF.
>>
> 
> Thanks, Jan.
> 
> I guess I'll stick with "Base Normal Form" for now.  Are UNF and NFNF
> defined on tables or on relations?

Hmm, good point, on relations. So they are actually not the same as your concept.

>>> I haven't defined candidate key, but I would want the definition
>>> to be compatible with the definition of candidate key as used in
>>> BCNF.

>>
>> That's do-able. If you define a table as a list of tuples that all
>> have the same attributes, then a superkey is a set of attributes K
>> such that there cannot be two different positions in the table such
>> that the tuples at these positions agree on the values for K. The
>> notion of candidate key is then based on the notion of superkey in
>> the usual way.
> 
> What's the difference between calling a table a list of tuples, and
> calling a table an array of tuples?

Nothing, really. Although for me an 'array' has some associations with a particular kind of implementation.

>> Note that this definition is sloppy in the usual way where we
>> ignore the fact that a candidate key is not so much a property of a
>> single relation but rather of the set of all relations that are
>> valid for a certain relvar.
>
> I'm hazy on the distinction between a relation and a relvar.

A relation is a particular set of tuples, say, the contents of the Employees table at this moment. The relvar would in that case be more abstract notion of the Employees table. People will often use the term relation for both things.

>> I wouldn't skip 3NF. The difference between BCNF and 3NF is an
>> important one and the decision to go beyond 3NF should be an
>> informed one.

> 
> Can you say some more about this?  What are the consequences of
> taking a step between 3NF and BCNF?

You might no longer be dependency preserving. That means that some of the constraints can no longer be represented as key constraints and foreign key constraints.

  • Jan Hidders
Received on Wed Jul 06 2005 - 09:12:16 CEST

Original text of this message