wow
  ----- Original Message ----- 
  From: emccormick06 
  To: [email protected] 
  Sent: Saturday, November 05, 2005 4:57 PM
  Subject: Re: [php_mysql]: Tables : design of "many-to-many" relationship and 
speed


  Ok David, now that you understand how the lookup table works (and take a 
moment to 
  appreciate the beauty and elegance of it - isn't it cool?) I wanted to add 3 
little bits of 
  advice that I think will help you at this stage in your development into a 
SQL master.

  Note that these 3 thoughts are my own creation, and run a little bit against 
the 
  conventional wisdom.  People may chime in to disagree with me on some or all 
of them; 
  nevertheless, I think you'll find it helpful to at least consider them.

  1) Remember this: databases are incredibly powerful programs that very, very 
smart 
  people have worked a long long time on.  "That's obvious, what's your point?" 
you say?  
  Here's why I remind you of that: databases are primarily designed to store 
and recover 
  specific bits of info from large datasets, and they do that VERY VERY well.  
Don't be afraid 
  to ask the DB to do something that seems intuitively to be "hard" - you'll 
often be 
  surprised at how fast it can do things.  That doesn't mean that ANY question 
you ask it will 
  be answered quickly - we can all show you ways to bog down any database.  The 
key point 
  is to not ASSUME that something will be slow.  Try it first!  Only worry 
about speed if it's 
  not already fast.  (I bring this up because you were worried about speed in 
your example 
  with 2k patients and 70 meds.  To MySQL, that is TINY.  It's 2+2.  It'll spit 
that out so fast 
  you won't have time to blink)

  2) Here's where I'll get a little controversial: one of the previous 
respondents suggested 
  making the lookup table have two keys, using both the patient id and the med 
id as a 
  combined key field.  While you can do this - and really sophisticated DB 
designers 
  probably prefer it - I would suggest you do what the first guy originally 
suggested, and 
  give the lookup table it's own ID.  In general, until you reach a HIGH level 
of SQL 
  sophistication, it's just easiest to always have a single, indexed, unique id 
field.  I'd even 
  suggest ALWAYS naming it "ID".  It's just one less thing to get confused 
about, it gives you 
  a consistent "handle" to manipulate a row (to update or delete it, for 
example)

  3) This last one is just my own technique, I don't know if other people do 
this, or object to 
  it, but here goes.  The problem with lookup tables (the patient_med table in 
your case) is 
  that they are very confusing to look at alone, since they're just numbers.  
Obviously, you'll 
  want and need to design admin screens to enter, retrieve, and edit data in 
them, but even 
  so, I often find myself looking at the tables in phpMyAdmin or other similar 
tools.  
  So....here's my trick: I add a field (usually called "comment") that's just 
for me, in which I 
  put a little data from the other tables in so that I can tell what they are.  
Note: Be sure you 
  don't actually USE this for anything other than reference, since it's 
duplicate info.  But if 
  you're the DBA, it makes it easier to figure out what's going on.

  Here's an example:
  If your patient row is: ID: 240 | Firstname: John | Lastname: Smith
  and your med row is:  ID: 12 | medname: aspirin
  then your lookup row would like like this:
  ID: 320 | patient_id: 240 | med_id: 12 |comment: Smith Aspirin

  Ok, that's my $0.02 (for a total of $0.04 I've supplied so far :-).  None of 
these are 
  authoritative, but perhaps they'll be useful to you.


  --- In [email protected], David Halliday <[EMAIL PROTECTED]> wrote:
  >
  > Thank you Pete.
  > 
  > It is now clear and fixed. 
  > >
  > What I can't get clear is, what you will (are able to
  > / are allow to)
  > do.  It seems that you  don't want to do any data
  > shuffling to put the
  > data right?  You just want to add one field to the
  > Patients table?  And
  > you don't have a code number for the drugs, just a
  > tablename.  Do you
  > appreciate that you would build table3 with SQL
  > commands, not by typing?
  > 
  > You see, I don't understand why you have this problem.
  >  I can see that,
  > historically, the database was designed badly, and
  > needs putting right.
  > But you seem to be saying that you cannot (are not
  > allowed to?) put it
  > right.  Or is it just that you don't want to?
  > >
  > 
  > You see the point of creating a third table totally
  > escaped my mind  - and its a fact of life that people
  > have different IQs ;)
  > 
  > At first I didnt know that it was intended as a
  > "look-up" table etc..  But now its crystal clear..
  > obviously its the logical and correct way of doing it.
  > 
  > Thank you for your contribution.
  > Best regards
  > David
  > 
  > 
  > 
  >       
  >       
  >             
  > ___________________________________________________________ 
  > Yahoo! Messenger - NEW crystal clear PC to PC calling worldwide with 
voicemail http://
  uk.messenger.yahoo.com
  >










  The php_mysql group is dedicated to learn more about the PHP/MySQL web 
database possibilities through group learning. 



------------------------------------------------------------------------------
  YAHOO! GROUPS LINKS 

    a..  Visit your group "php_mysql" on the web.
      
    b..  To unsubscribe from this group, send an email to:
     [EMAIL PROTECTED]
      
    c..  Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service. 


------------------------------------------------------------------------------



[Non-text portions of this message have been removed]



------------------------ Yahoo! Groups Sponsor --------------------~--> 
Get Bzzzy! (real tools to help you find a job). Welcome to the Sweet Life.
http://us.click.yahoo.com/A77XvD/vlQLAA/TtwFAA/CefplB/TM
--------------------------------------------------------------------~-> 

The php_mysql group is dedicated to learn more about the PHP/MySQL web database 
possibilities through group learning.  
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/php_mysql/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 


Reply via email to