>> >> % 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.

Sorry for being unclear -- I didn't mean to suggest to consider cases
when a laywer is also an agent. I might have mixed normalisation
issues with other suggestions for good database design, too.

What I was to say is, whenever you have the same kind of information
for a number of database entities (like lawyer, agent, etc.), it's
always a good idea to keep that information in a separate table.
Phrased in a more hands-on way: If you store contact information for
lawyer, agents, and other groups, that should go to a separate table.

Regards,

Stefan Hinz
-- 
Are you MySQL certified? http://www.mysql.com/certification/
   __  ___     ___ ____  __
  /  |/  /_ __/ __/ __ \/ /    Mr. Stefan Hinz <[EMAIL PROTECTED]>
 / /|_/ / // /\ \/ /_/ / /__   MySQL Documentation Team
/_/  /_/\_, /___/\___\_\___/   Berlin, Germany
       <___/   www.mysql.com   +49 30 8270294-0


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

Reply via email to