There is somewhat a method to this madness :).  There isn't a formula that
determines outcome.  They will just be arbitrary values that I assign.

Obviously, I'm new to SQL but I'm trying to understand your suggestion. It
appears that table Final has the composite/primary keys of goal and size
which will be foreign keyed to table User.   How exactly does the user
submit/store his goal/size and be assigned an outcome if the User table is
using FKs  for goal/size?  It seems backwards to me.
On Feb 27, 2016 7:04 PM, "Adrian Klaver" <adrian.kla...@aklaver.com> wrote:

> On 02/27/2016 03:12 PM, Aaron Christensen wrote:
>
>> Hi Adrian,
>>
>> Thank you for responding with the SQL code.  However, outcome cannot be
>> a primary key because outcome values will be duplicates in some
>> instances.  I am not sure how else to have a lookup table that stores
>> static values.
>>
>
> Well first is there a method to the madness:)?
>
> In other words is the choice of an outcome arbitrary or is there some
> calculation that goes into it?
>
> Otherwise, something like?:
>
> test=> create table final(goal varchar, size varchar, outcome int, PRIMARY
> KEY(goal, size));
>
> test=> create table user_tbl(user_id int PRIMARY KEY, user_name varchar,
> goal varchar, size varchar, CONSTRAINT g_s_fk  FOREIGN KEY (goal, size)
> REFERENCES final(goal, size));
>
>
> test=> \d final
>           Table "public.final"
>  Column  |       Type        | Modifiers
> ---------+-------------------+-----------
>  goal    | character varying | not null
>  size    | character varying | not null
>  outcome | integer           |
> Indexes:
>     "final_pkey" PRIMARY KEY, btree (goal, size)
> Referenced by:
>     TABLE "user_tbl" CONSTRAINT "g_s_fk" FOREIGN KEY (goal, size)
> REFERENCES final(goal, size)
>
> test=> \d user_tbl
>           Table "public.user_tbl"
>   Column   |       Type        | Modifiers
> -----------+-------------------+-----------
>  user_id   | integer           | not null
>  user_name | character varying |
>  goal      | character varying |
>  size      | character varying |
> Indexes:
>     "user_tbl_pkey" PRIMARY KEY, btree (user_id)
> Foreign-key constraints:
>     "g_s_fk" FOREIGN KEY (goal, size) REFERENCES final(goal, size)
>
>
>
>
>
>> Thanks!
>> Aaron
>>
>> On Sat, Feb 27, 2016 at 5:15 PM, Adrian Klaver
>> <adrian.kla...@aklaver.com <mailto:adrian.kla...@aklaver.com>> wrote:
>>
>>     On 02/27/2016 01:15 PM, Aaron Christensen wrote:
>>
>>         Hello,
>>
>>         I am trying to figure out the correct way to design the database
>>         table
>>         to support the following situation.
>>
>>         To start, I have an Excel spreadsheet that maps particular
>>         combinations
>>         of Goal and Size to an Outcome.  Goal choices are "Long",
>>         "Average", and
>>         "Short".  Size choices are "Big", "Medium", and "Small".  The
>>         designated
>>         Outcome for each goal/size combination are number values between
>>         12 and
>>         20.  Please refer to attachment "goalSizeExcel.pdf" for the Excel
>>         spreadsheet version.
>>
>>         In order to use this data in the database, I converted it to an
>> SQL
>>         table with attributes "Goal", "Size", and "OUTCOME".  "Goal" and
>>         "Size"
>>         serve as composite primary keys.  Please refer to attachment
>>         "TableFinal.pdf" for the illustration.
>>
>>         Please refer to "UserOutcome.jpg" for the ER diagram.  The user
>>         inputs
>>         his name, goal, and size.  Based on his goal and size
>>         combination, he is
>>         assigned a particular "outcome".
>>
>>         I am not exactly sure if my attached ER diagram is the correct
>>         way to
>>         model this.  I don't want to add a UserId [FK] to table Final
>>         because
>>         table Final is supposed to serve as a lookup or reference table
>>         (I am
>>         not sure of the correct terminology).
>>
>>         Please advise if I am on the right track or if I should follow a
>>         different design.  I intend to have a few other lookup/reference
>>         tables
>>         that will serve a similar purpose.
>>
>>
>>      >From a quick look it seems to me that outcome is the primary key
>>     to goal and size, so
>>
>>     CREATE TABLE final (
>>        outcome int PRIMARY KEY,
>>        goal varchar,
>>        size varchar
>>     )
>>
>>     CREATE TABLE user (
>>     name varchar,
>>     outcome_fk int REFERENCES final(outcome) ON ...
>>     )
>>
>>
>>
>>         Thank you!
>>         Aaron
>>
>>
>>
>>
>>
>>
>>
>>
>>     --
>>     Adrian Klaver
>>     adrian.kla...@aklaver.com <mailto:adrian.kla...@aklaver.com>
>>
>>
>>
>
> --
> Adrian Klaver
> adrian.kla...@aklaver.com
>

Reply via email to