Re: Can we solve this -- NFNF and non-1NF at Loggerheads

From: <lauri.pietarinen_at_atbusiness.com>
Date: 7 Feb 2005 08:54:27 -0800
Message-ID: <1107795267.769014.111070_at_z14g2000cwz.googlegroups.com>


Alan wrote:
> <lauri.pietarinen_at_atbusiness.com> wrote in message
> news:1107793230.717306.130550_at_g14g2000cwa.googlegroups.com...
> > Alan wrote:
> >
>
> Fingerprints is an interesting example, and if done properly, is
easily in
> 1NF (and 3NF):
>
> FINGERPRINTS(person_id(PK), lh_thumb, lh_f1, lh_f2, lh_f3, lh_f4,
rh_thumb,
> etc...)
>
> Each fingerprint (lh_f1, lh_f2, etc) is atomic. The tuple contains
atomic
> values. It is in 1NF No problem at all. Now, if you were modeling it
> incorrectly:
>
> FINGERPRINT(person_id, prints(1...10)) Then you have a problem. You
are NOT
> in 1NF, because prints is not atomic. It is an array containing 10
distinct
> atomic pieces of data.
>
> Airplane blueprints is the same example, just MUCH larger. Not being
> familiar with the industry, I can provide a simple example:
>
> AIRPLANE_BLUEPRINTS(print_id(PK), airplane_model, left_wing,
wight_wing,
> fuselage, tail, passenger_comaprtment,
> bomb_compar_er_I_mean_baggage_compartment...)
>

The point is that from the RM-perspective the fingerprint and blueprint are
both atomic, but they are hardly indivisible, if we use proper operators to
break them apart.

BTW, what stops me from creating the domain NAME_LIST = {all ordered lists of names} and then using this domain to create the relation FRIENDS:

(person_id: integer, person_name: string, person_friends: NAME_LIST)

This would be within the rules specified by your Elmasri/Navathe quote, certainly in 1NF. The only thing is that the person_friends -list would have to be "cracked open" with some special operators, but from the RM-perspective
it would be atomic. So it is just a question of perspective.

Atoms are indivisible from the perspective of chemistry but not from the perspective of physics!

regards,
Lauri Pietarinen Received on Mon Feb 07 2005 - 17:54:27 CET

Original text of this message