Re: Sixth normal form

From: Jan Hidders <hidders_at_gmail.com>
Date: Wed, 01 Aug 2007 11:36:29 -0000
Message-ID: <1185968189.243375.245580_at_d55g2000hsg.googlegroups.com>


On 1 aug, 11:50, Sameeksha <sameeksha.ch..._at_gmail.com> wrote:
>
>
> However, a next question (first of all sorry for taking up your time):
> Will a table {a,b,c} with join dependencies {(a,b), (b,c)} be in
> fourth / fifth normal form?

That depends on the candidate keys. If {b} is a candidate key then it is in 5NF if this is the only non-trivial JD that holds. If {b} is not a candidate key then it is not in 5NF.

> The fourth normal form states there should not be more than 1
> independent multivalued dependencies; i.e. the table should not
> contain more than 1 independent many-to-many relationships. e.g.
> {teachername, teacherid, courseid}

That's a rather complicated and confusing way of formulating it and depending on how you define independency of multivalued dependencies probably wrong. I suggest we stick to the more standard definition:

A relattion is said to be in 4NF if for every non-trival MVD A->>B it holds that A is a superset of a candidate key.

> The fifth normal form states that there should not be more than 1
> semantically related multi-valued dependencies. e.g. {skillid,
> teacherid, courseid}

How do you define "semantically related"? Also here it is really much simpeler if you just stick to the standard definition:

A relation is said to be in 5NF if all join dependencies are implied by the candidate keys.

Any attempt to reformulate it to something easier or more intuitive in my experience almost always ends up with something that is either wrong or actually harder to understand.

The only somewhat mysterious part may be the "JD is implied by the CKs" but this can be tested by the following simple procedure:

  1. Let jd be the join dependency we want to test
  2. While jd has two elements (being sets of attributes) Si and Sj such that the intersection of Si and Sj contains a candidate key do: 2.1 replace Si and Sj with the union of Si and Sj
  3. If jd contains the header of the relation (which is also a set of attributes) then return "yes" else "false"

For some reason most textbooks don't give this algorithm.

> So in case (a,b) and (b,c) are independent from each other they will
> be split out into tables {a,b} and {b,c} when one is evaluating
> whether the table is in 4NF. In case these two are semantically
> related they will still be split when one is evaluating whether the
> table is in 5NF.

Unless you tell me how you define "independent" and "semantically related" the above might be complete nonsense. Again, your intuition doesn't seem to be far off, but we need to be exact here.

  • Jan Hidders
Received on Wed Aug 01 2007 - 13:36:29 CEST

Original text of this message