Hi. On Sat 2002-12-28 at 08:15:58 -0500, [EMAIL PROTECTED] wrote: [...] > create table schedule > ( > # ID number > id smallint not null default 0 auto_increment primary key , > client smallint , # references client.id > class smallint , # references classtypes.id > place smallint , # references places.id > instr smallint , # references personnel.id > time datetime # when
Don't you need some kind of duration? Or are the times fixed and you know beforehand when the class starting at x o'clock will end? And saving a number for the time slot would also work? > ) ; > > I could, for every insert, check > > select * from schedule where client = '1' and time = '...' ; > > to make sure the client isn't being booked twice, or > > select * from schedule where instr = '1' and time = '...' ; > > to make sure the instructor isn't double-booked, but In the case of time slots, you could create a unique index on (client,time) and (instr,time) and skip the selects. Simply insert and check for an duplicate key error. > that seems like it would get awfully slow as the table grows... I wonder why you think so. Maybe I do not understand your concern correctly, but with the right indexes this shouldn't be slow. Do I miss something? If not: Whether an index (client,time) or (time,client) is better depends on your data (few or a lot of client, etc). If you don't have time slots, even (client) or (time) would help, although not as much. I you are not sure, simply build all of them and look which one get used. Then dropped the other ones again. The same applies for "instr". > Is this the sort of thing where a temporary table is advised, or > should I define a reverse table that shows each instructor and > his/her bookings, or what? I am not sure how a temporary table would improve things. So we have some kind of misunderstanding. Could you post how you would use temporary tables here? Then I could easier tell, how I would do the same. HTH, Benjamin. -- [EMAIL PROTECTED] --------------------------------------------------------------------- Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail <[EMAIL PROTECTED]> To unsubscribe, e-mail <[EMAIL PROTECTED]> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php