I would create another table called "extras" that include all possible extra
choices.  This table has a SpeciesID field to assign it to a species.

A third table called "details" could have OfficerID and ExtrasID and ExtrasValue
fields.  That way you could have as many or as few extras as you want.

Filling out the data requires two forms.  The first just gets the basic officer
info.  The second grabs the officerID and Species and displays only those "Extras"
that pertain to that species.  Submitting the info populates the "details" table.

Queries link the officer & details tables on OfficerID.  You can link the extras &
details tables on the ExtrasID when you need.

kind regards,

bill hollett

Jesse Scott wrote:

> Hi again, another conundrum.
>
> What is the best way to deal with the following situation?
>
> You have a group of common properties including a property that indicates a
> second group of common properties.  For example,
> suppose you have this table:
>
> Officers
> ------------
> Name
> Rank
> Age
> Height
> Weight
> Species
>
> The 'Species' property may have the following values: Vulcan, Human,
> Klingon, or Android.
>
> If (Species==Vulcan) then you want to store these additional properties:
> MindmeldCount and YearsOnVulcan
> If (Species==Klingon) then you want to store these additional properties:
> NumberofConcealedWeapons and RidgesOnForehead
> If (Species==Android) then you want to store these additional properties:
> PositronicBrain and MemoryJigas
> If (Species==Human) then you want to store these additional properties:
> AttendedStarfleetAcademy and BloodType
>
> The problems I want to avoid are:
>         1) placing all the properties for all species in the Officers table (as
> this would include unnecessary properties for each row) and
>         2) storing the properties in the Officers in four seperate tables
> (Klingons, Humans, Androids, and Vulcans) redundantly.
>
> Should additional tables be created: Vulcans, Klingons, Androids, Humans?
> If so, how should these tables be joined to Officers?
>
> In an object language I would solve a problem like this be creating a base
> class with the Officers properties and then deriving new classes from this
> base class using inheritance.  How do I solve this problem in a database
> setting?
>
> Thanks in advance for your help,
>
> Jesse
>
> --
> PHP Database Mailing List (http://www.php.net/)
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> To contact the list administrators, e-mail: [EMAIL PROTECTED]


-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to