Are you saying that each part has 120 characteristics that are different in
NATURE from the characteristics used for other parts, or is it just the
AMOUNT attached to each characteristic that varies by part? (Pardon the caps
for emphasis, but the forum does not do bold/italics.) My guess is that it is
the latter, but correct me if I am wrong.
Assuming this to be true, the Characteristics table would not contain 120
FIELDS (columns), but 120 RECORDS - 1 for each characteristic. It could have
as little as two fields: CharID (Primary Key, AutoNumber) and CharDesc (short
description of the characteristic).
Characteristics table examples:
CharID = 1, CharDesc = "Width"
CharID = 2, CharDesc = "Height"
CharID = 3, CharDesc = "Material"
Depending on the relationship of characteristics to criteria, you could
stick with 30 records and add an additional field for each criteria: Crit1,
Crit2, Crit3, and Crit4 (that is, if the NAME of each criteria will be the
same for that particular characteristic, regardless of the part number to
which it applies; otherwise you will need to stay with 120 records).
Now, just a couple of follow-up questons:
1. Do the same 120 characteristics apply to each part (i.e. must each part
have an entry for each characteristic), or is this a pool of characteristics,
only some of which apply to any given part?
2. Does each characteristic also have an associated data element (e.g.
CharDesc = "Width", CharData = 4.25)?
If #2 is true, then the fields in PartCharacters table would be like this:
PartID (relationship to primary key of Parts table)
CharID (relationship to primary key of Characteristics table)
CharData (user-entered data giving the quantity associated with that
characteristic)
The key to having this work will be well-structured forms that make this all
transparent to the user. Now, for a simple example that shows the
many-to-many relationship:
Parts table:
PartID = 1, PartDesc = "Dial"
PartID = 2, PartDesc = "Lid"
PartID = 3, PartDesc = "Base"
Characteristics table:
CharID = 1, CharDesc = "Length"
CharID = 2, CharDesc = "Diameter"
CharID = 3, CharDesc = "Width"
PartCharacters table:
PartID = 1, CharID = 2, CharData = 1.25 (denoting a diameter of 1.25 for the
dial)
PartID = 2, CharID = 1, CharData = 14.75 (denoting a length of 14.75 for the
lid)
PartID = 2, CharID = 3, CharData = 10.25 (denoting a width of 10.25 for the
lid)
PartID = 3, CharID = 3, CharData = 17 (denoting a width of 17 for the base)
PartID 1 has more than 1 Characteristic, but CharID 1 is used in more than
one part.
One more thought (to further complicate matters): since you may have various
projects, you may well need to have a Projects table that has ProjID &
ProjDesc, and then add ProjID as a foreign key to your Parts table to
identify which project contains that particular part.