blah blah blah semantics aside;

what i was saying with 20 records is that you wouldn't necessarily find a
performance increase rdbms-side;  but you will experience a headache trying
to port your current app over to another schema; unless there's a good
reason for this - leave it.  but if you want extensibility and the ability
to effectively retain one-to-many relationships (which his current schema
does not provide for) then you should look into segregating the information.

innodb also provides for foreign keys and transactions, which myisam does
not.

~phillip


"Chris W. Parker" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
Phillip Jackson <mailto:[EMAIL PROTECTED]>
    on Tuesday, February 24, 2004 11:47 AM said:

first of all i'd like to say that my comments below are based upon the
way i understand things to be. i could very well be wrong. so someone
(phillip) correct me if i'm wrong.

> what you describe is called 'normalization';  if you'll always only
> have 20 people in a table it may not be worth it for you - though
> it's poor practice to continue to design tables in this fashion. come
> up with a nice naming convention and design tables that break contact
> information such as name, address, etc. away from other information,
> such as username and password.

that's not normalization. normalization is "the process of organizing
data to minimize redundancy"[1].

> breaking out site prefs is a good idea, too becuase you may or may
> not need to call these prefs every time you do a page load.

the number of columns in a table is probably negligent when it comes to
retrieving data from a table, *especially* if you've only got 20
columns. in the first place you should only be selecting the columns you
need and not everything (as in "SELECT * FROM table").

> regardless it's good practice to seperate information not pertinent
> to the other fields.

true but only to a certain degree, and this is also subjective. more
important is the kind of data is disparate. also this really only counts
when normalization is involved and not in the original posters case
since i don't recall him mentioning anything that sounded redundant in
his user table.

why have four tables separating user preferences, user names, user
addresses, and user login/password information if each user is always,
only going to have one record in each table?

> another thing you should consider is if someone has more than one
> address - such as a po box and a home address... would you require
> them to choose only one?

you're on the right track but this really isn't a good example for
normalization. a better example would be if you're going to allow
multiple po box addresses, or multiple home addresses. let me make an
example of normalization.

(a poorly designed table)
USERS
 id (primary key, auto-increment)
 name
 home_address_1
 home_address_2
 home_address_3
 home_address_4
 home_address_5
 home_address_6
 po_box_1
 po_box_2
 po_box_3
 po_box_4
 po_box_5
 po_box_6

now with normalization:

USERS
 id (primary key, auto-increment)
 name

USERS_ADDRESSES
 id (primary key, auto-increment)
 u_id (foreign key, users.id)
 home_address
 po_box

with the first table you could only have up to 6 home addresses and 6 po
boxes for one user. in the normalized example you can have a nearly
infinite number of both for one user.

> if you require a one-to-many relationship then you may want to
> break this out;

now *that's* normalization.

> mysql has built-in checking with innodb tables to reference foreign
> keys to do error-checkign for you (ie referencing someone that
> doesn't even exist or deleting a recordd that has information
> referencing it).
>
> http://www.phpbuilder.com/columns/barry20000731.php3

i didn't know that, i'll have to look into it.



chris.

[1] http://www.webopedia.com/TERM/n/normalization.html

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to