On Wed, 2004-09-15 at 18:40, Adam Maloney wrote: > > How do I allow for more workout types to be added and relate them to the > > existing tables? > > > > I can imagine having tables for users, daily_stats, workouts, and routes, > > but how would I integrate new workout types? I don't think adding fields to > > a general workout table would be the most elegant solution. Maybe I'm wrong. > > (It's happened before.) > > Create a workout_types table? > > table workout_types > name varchar(64) > ... > > Then just reference the workout_types.name in whatever other tables you > reference a workout type? > > 3rd normal form. yum. > > Only problem then is that each workout_type will have different attributes to track. Distance isn't going to do too much for the jumprope workout_type. Number of hops won't work for the Bicycle. My best suggestion would be: create table workout_type ( wtID serial not null primary key, wtName varchar(25) not null, ); -- waOrder is a sort order field for display purposes create table workout_attribute ( waID serial not null primary key, waOrder integer not null, waName varchar(25) not null ); -- woPerson references another person table create table workout ( woID serial not null primary key, wtID integer not null, woPerson integer not null, woDate date ); create table join_workout_attribute ( jwaID serial not null primary key, waID integer not null, woID integer not null, jwaValue varchar(25) ); create unique index idxJWA_1 on join_workout_attribute(waID, woID); create view vw_Workout as select wtName, woPerson, woDate, jwaValue from workout_type wt, workout_attribute wa, workout wo, join_workout_attribute where wt.wtID = wo.wtID and jwa.wtID = wt.wtID and jwa.woID = wo.woID ; Of course, this only gives you varchar attributes. If you wanted to test your muscle with PostgreSQL, you could add an integer column and then create a rule to monitor to make sure you do not store 100 minutes into a "face_color" attribute that should be storing purple. Fun stuff! _______________________________________________ TCLUG Mailing List - Minneapolis/St. Paul, Minnesota Help beta test TCLUG's potential new home: http://plone.mn-linux.org Got pictures for TCLUG? Beta test http://plone.mn-linux.org/gallery tclug-list at mn-linux.org https://mailman.real-time.com/mailman/listinfo/tclug-list