Re: 4NF is Where It Is At! [WAS Re: 1:1 relationships]

From: Jan Hidders <hidders_at_REMOVE.THIS.win.tue.nl>
Date: 7 Feb 2001 13:13:40 GMT
Message-ID: <95rhm4$2eb$1_at_news.tue.nl>


Barry wrote:
> Jan Hidders wrote:
>
> > Barry wrote:
> > > Jan Hidders wrote:
> > > > Barry wrote:
> > > > > Jan Hidders wrote:
> > > > > > Barry wrote:
> > > > > > >
> > > > > > > The classic example used to be
> > > > > > > lives_at( person ) -> current_address
> > > > > > > and
> > > > > > > lives_at( person ) -> current_home_ph#
> > > > > > > but
> > > > > > > lives_at( person ) -/-> current_salary
> > > > >
> > > > > I'd intended {person} as the candidate key, and (unstated)
> > > > >
> > > > > earns( person ) -> current_salary
> > > >
>
> So does that mean that each of { person } ->> { current_address } and
> { person } ->> { current_salary } are independent MVDs since we've
> already said that there is no connection between current_address
> values and current_salary value?

Yes, it does. For completeness I will give you the formal definition:

For a relation R with attributes H the MVD X->>Y (with X and Y subsets of H) holds if

  for every two tuples t1 and t2 in R such that t1[X]=t2[X] there is   also a tuple t1[H-Y]+t2[Y] in R.

Where "+" is the tuple concatenation, "-" the set difference and t[X] the projection of the tuple t on the attribute set X. What it basically says is that the Y part of two tuples is interchangeable if the X parts are the same.

Checking that this applies to the dependencies you mentioned is left to the reader as an exercise. :-)

-- 
  Jan Hidders
Received on Wed Feb 07 2001 - 14:13:40 CET

Original text of this message