
Originally Posted by
CraigDolphin
Just a brief comment: I think Stingaway's first instinct is correct. I strongly suspect you haven't quite got the normalization figured out.
Bear in mind, you haven't explained anything about the real world situation that your table structure is attempting to model, but based solely on the table names you've listed I see four types of information:
A.Participation
B.History
C.AssessmentData
D.Insurance
I would bet that the fields in each of your AssessmentData tables are all (mostly) the same names/types of information. You could replace those 15 tables with two:
1.AssessmentData
2.AssessmentType
The AssessmentData table would have all the fields that are common to all 15 tables, plus one extra 'AssessmentTypeID' FK field that is linked to the PK of the AssessmentType table.
And possibly, you may find that if you are measuring different metrics in different assessments you might need to go further with normalizing the data.
Perhaps something like:
table AssessmentEvent
-AssessmentEventID (pk, auto)
-AssessmentTypeID (fk)
-ID (fk to your 'One' table which looks like it should be named something like client, or subject, or person, or whatever)
-AssesmentEventDate (maybe?)
table AssessmentType
-AssessmentTypeID (auto, pk)
-AssessmentType (text)
table AssessmentResults
-AssessmentResultID (auto,pk)
-AssessmentDataEventID (fk)
-MetricID (fk)
-MetricValue
table Metrics
-MetricID (auto, pk)
-MetricName (text)
This structure allows you to add only the metrics that apply in each stage of the assessment process, and you're adding rows, not fields. This means that if different metrics are used in the future, you won't be having to add new fields to tables, modify forms to accomodate the new fields, or rewrite code etc.
I strongly suspect that a similar analysis might identify a much more normalized structure would be possible for the other areas I mentioned at the start. And it may also turn out that your other tables aren't quite hitting the nail on the head either.
Perhaps it would be most helpful to provide a plain english explanation of what kinds of data you are trying to track -- on a general level -- and what you hope to be able to do with it. That should help scope out what your table structure needs to be.