On Sun, Feb 28, 2016 at 12:36 AM, Adrian Klaver <adrian.kla...@aklaver.com>
wrote:

> On 02/27/2016 09:19 PM, Aaron Christensen wrote:
>
>> 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.
>>
>
> Well there a some unanswered questions, answers to which will shape the
> ultimate design:
>
> Who actually creates the relationship between goal/size and outcome, the
> user or you?
>
> Can a user have more than one combination of goal/size?
>
> As to how the user picks their goal/size, that is more an application
> question. What the relationship between user and final does is ensure that
> a user can only select a goal/size combination that exists, which I assumed
> is what you where looking for when you mentioned a lookup table. If I
> misunderstood then maybe the answers to the above questions will clarify.
>


It's not that you're misunderstanding, it's that I'm doing a horrible job
describing my question.

For answers to your questions:
I will be creating the relationship between goal/size and outcome.  The
user can only provide their goal/size on any particular date.  Based on
their goal size, I will assign to them the corresponding outcome which will
be used as an input to some formula.  Any user can have one or multiple
goal/size combinations.  That is correct, the user will only be able to
select preexisting goals and sizes.



>
>
>> On Feb 27, 2016 7:04 PM, "Adrian Klaver" <adrian.kla...@aklaver.com
>> <mailto: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>
>>         <mailto: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>
>>         <mailto:adrian.kla...@aklaver.com
>>         <mailto:adrian.kla...@aklaver.com>>
>>
>>
>>
>>
>>     --
>>     Adrian Klaver
>>     adrian.kla...@aklaver.com <mailto:adrian.kla...@aklaver.com>
>>
>>
>
> --
> Adrian Klaver
> adrian.kla...@aklaver.com
>

Reply via email to