NYCPHP Meetup

NYPHP.org

[nycphp-talk] data modelling vs. db design (was: ER Diagram tool for MySQL/OS X)

Russ Demarest rsd at electronink.com
Tue Oct 4 12:16:26 EDT 2005


Another consideration is how you are using the addresses and the  
users. For example if you are going to be joining users with other  
tables then trying to determine which of those users also  have an  
address in  NY the queries can beat on your server. How many users  
will you have? What with the addresses be used for? Will you need to  
search all addresses for each user related to other tables?

 From a data point of view you would normalize it all and I would  
suggest a states and countries table to be linked to addresses as a  
well as address type. But when you are trying to come up with all the  
users with a address in NY who are related to other tables, i.e.  
groups, you may wish you have it all in one table.

If you get really "normal" you could have a "user_addresses" table  
which would contain the address_type field so if you have 2 users at  
the same address the address would only be in the address table once  
but related to both users. :)

Don't get me started if you need to track history. "Where did user X  
live at home 2 years ago?". Then you have a start_date and end_date  
in the user_addresses.

I have done it both ways and there really is not a clear winner,  
depends on the situation. I am glad I am not tracking user address  
history any more,

Good luck


On Oct 4, 2005, at 11:53 AM, Allen Shaw wrote:

> Stephen Musgrave wrote:
>
>
>> This is an interesting topic because I'm approaching a question based
>> upon this principal.  There is an application that I am building  
>> where
>> the User record can have 5 addresses (home address, work address,
>> permanent address, international address, etc, etc).  I'm considering
>> making a table called UserAddress and then linking it to address ID
>> fields in the User table.  I'm on the fence about it because while I
>> don't want a monstrous User table with tons of columns, I also don't
>> want to over normalize.
>>
>>
>>
> Here's a great working example to explore the issue.  I would let the
> User table contain no address info, and then let the UserAddress table
> contain one address per row with an extra column for UserID.  This  
> seems
> like a clear one-to-many relationship between a person and his/her  
> many
> addresses (also assuming it could be any number between 0 and 5,
> right?), so adding 5 sets of columns to the User table doesn't seem
> right...
>
> Honestly, the only reason I'm writing here is so someone can  
> correct me
> if I'm wrong (and if I'm right then this might actually helping  
> somebody
> -- neat-o ...).
>
> -- 
> Allen Shaw
> Polymer (http://polymerdb.org)
>
> _______________________________________________
> New York PHP Talk Mailing List
> AMP Technology
> Supporting Apache, MySQL and PHP
> http://lists.nyphp.org/mailman/listinfo/talk
> http://www.nyphp.org
>
>




More information about the talk mailing list