Re: Bill of materials / Groups in Groups

From: Kyle Lahnakoski <kyle_at_arcavia.com>
Date: 2000/01/11
Message-ID: <387BC310.D7414F64_at_arcavia.com>#1/1


Harry Chomsky wrote:
>
> joe_celko_at_my-deja.com wrote in message <85dv34$34t$1_at_nnrp1.deja.com>...
> >This
> >is not a normalized table and you can prove it very quickly. In a
> >normalized databsae, you have one fact, in one place, one time. Change
> >Chuck's id number and you have to change the boss column in three other
> >places.
>
> Now I'm very confused. What definition of normalization applies here? Are
> we talking about 3NF or BCNF or some other mathematical definition? Or is
> it just the intuitive idea that "each fact should be stored in only one
> place"?

Normalization is the act of removing functional dependencies. Everything I presented so far is in at least 3NF from. A functional dependencies for 3NF are analyzed only within a single table. If the value of any column depends on the value(s) of any other column(s) there is a functional dependency. Notice that the name of an employee does not depend in who he is. (Chuck can change his name), the Key does not depend on the name, or the boss (two people with the same name can work for the same boss). Boss does not depend on name (people with the name Mike are not restricted to working for a single person).

Only in 4NF and higher are functional dependencies between tables analyzed. Even then, changing id numbers to see if anything else has to change is not checking for a functional dependency. Simple replacement of ID numbers is only a syntactic change. 1) Changing the ID from x to y, and changing it everywhere else makes x=y; no change in the DB, why did you make the change in the first place?
2) Making a change to just the ID of an employee, is equivalent to replacing a person with another with the same name and boss (not too difficult to do).  

> Do you consider the following set of tables to be normalized?

Your table definitions are normal, given the info provided. Received on Tue Jan 11 2000 - 00:00:00 CET

Original text of this message