Search Postgresql Archives

Re: Need schema design advice

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I need to track employees and their preferred locations, shifts, and
stations.

For example, I need to track that Alice prefers to work the morning
shift at the west-side location, and she likes to work the cash-register
station.

Also, I need to track that Bob likes the west-side and north-side
locations, likes the night shift, and likes the dishwasher station. Note
the one-to-many relationship between Bob and his preferred locations.  I
need to support that possibility.

So, I see two ways to make my tables, and I'd like some advice.

FIRST METHOD:

create table preferred_location (
    employee_id int references employee (id),
    location_id int references location (id));

create table preferred_shift (
    employee_id int references employee (id),
    shift int references shift (id));

create table preferred_station (
    employee_id int references employee (id),
    station_id int references station (id));

SECOND METHOD:

create table preferences (

    employee_id int references employee (id),
    other_table_name text, /
    other_table_id int));

In the second method, I'd store tuples like this in the preferences
table:

    (<Alice's ID>, 'location', <west-side location ID>),
    (<Alice's ID>, 'shift', <morning shift ID>)
    (<Alice's ID>, 'station', <cash register station ID>)

The nice thing about the second approach is I can extend this to store
all sorts of preferences as I dream them up.  But on the downside, I
don't have any FK constraints.

I suspect this is a pretty common dilemma.  Any commentary from the
experts on this list is welcome.

I tend to favor the second approach because it is more extensible. I might add an additional field to the preferences table. Something like preference_order so that you can record someone's primary pick from a secondary one.

Artacus



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux