> 
> From: Stefan Hinz <[EMAIL PROTECTED]>
> Date: 2003/11/28 Fri PM 04:45:24 CST
> To: [EMAIL PROTECTED]
> CC: David T-G <[EMAIL PROTECTED]>,  mysql users <[EMAIL PROTECTED]>
> Subject: Re[3]: Please analyze my project table design
> 
> >> % I don't know of a DB theory rule that says it's a bad idea to have the same 
> >> columns in many tables, but it might make the design more compact to take the 
> >> common stuff and put it into one table.
> 
> >> Oh, there is, indeed.  CF "normalization" :-)
> 
> > Well of course, but that begs the question, which normal form?
> 
> 1, 2, and 3. There's an abundance of explanations on E. F. Codd's
> normal forms on the web; I just picked the first Google result:

Again, which normal form?
 
> There are three main normal forms, each with increasing levels of normalization:
>    2.1 First Normal Form (1NF): Each field in a table contains different 
> information. 
>        For example, in an employee list, each table would contain only one birthdate 
> field. 

But he never gave any indication that that's an issue.

>    2.2 Second Normal Form (2NF): No field values can be derived from another field. 
>        For example, if a table already included a birthdate field, it could not also 
> include a 
>        birth year field, since this information would be redundant. 

But he never gave any indication that that's an issue.

>    2.3 Third Normal Form (3FN): No duplicate information is permitted. 
>        So, for example, if two tables both require a birthdate field, the birthdate 
> information 
>        would be separated into a separate table, and the two other tables would then 
> access the 
>        birthdate information via an index field in the birthdate table. Any change 
> to a birthdate 
>        would automatically be reflect in all tables that link to the birthdate 
> table. 

Right, that's *nominally* possible with the tables he gave, but the chance that a 
particular person is both an "agent" and a "lawyer" (or whatever) is probably about 
zero.  So the _true_ redundancy is not very much at all.

Which is why I asked:  how does it violate normalization rules?  And I mean in a 
practical sense, not in a "well, perhaps some single person *could* be both a laywer 
and an agent" sense.

And I'm not disagreeing that he shouldn't combine the fields into a single table.  
It's just not obvious why it follows from normalization considerations.

> http://www.databaseanswers.com/normal_forms.htm
> 
> If you're ambitious, you might want to try to abide by the other 330
> requirements for relational databases as well, but in most cases, NF 1
> through 3 is sufficient:
> 
> http://www.aisintl.com/case/olais/pb96/biblio.htm#Codd74
> 
> Regards,
> --
>   Stefan Hinz <[EMAIL PROTECTED]>
>   iConnect GmbH <http://iConnect.de>
>   Heesestr. 6, 12169 Berlin (Germany)
>   Telefon: +49 30 7970948-0  Fax: +49 30 7970948-3
> 
> [filter fodder: sql, mysql, query]
> 
> 


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to