Note: In the spirit of full disclosure let me say that I'm also a newbie to
Access. I have experience with database design and with other database
systems, but I only have about 2 months experience with Access. Fortunately,
your inquiry is in the area of database design where I do have experience.
After looking at the additional info that you provided, I now understand your
original question better.
Simplifying a bit, as I understand it, you have 3 different sources of data to
obtain patient diagnoses (hospital records, medical history form completed by
the patient, and clinic forms completed by the clinic at each of the patient's
exams). In your db, you need to record these diagnoses, and other info from
these 3 sources of data. At least some of the types of information that you
want to record will be different depending on which source, i.e., each source
contains 'fields' not contained on the other sources. However, each source
could identify 1 or more diagnoses for the patient.
In the approach that you came up with, and which you had doubt about, you had a
Patient Diagnosis table, which contained one record for each diagnosis for a
patient. You also had 1 table for each of the 3 different sources of data.
These 3 'source data' tables were related to the Patient Diagnosis table in a
1-to-Many relationship. In this design, any record on one of the 3 'source
data' tables woulkd be related to 1 or more records on the Patient Diagnosis
table. And, any record on the Patient Diagnosis table would be related to 1
(and only 1) record on 1 of the 3 tables. (In your 1st posting you described
this as 3 Many-to-Many relationships. I don't know that I understand that, so
maybe I'm missing something... If I do understand it, the approach I present
can be adjusted to eliminate that M-to-M relationship.)
Your design had:
PatientDiagnosis <<---> Source1 (M-1)
PatientDiadnosis <<---> Source2 (M-1)
PatientDiagnosis <<---> Source3 (M-1)
I'll suggest an alternative. It doesn't eliminate the problem of 3 different
sources of data, but it does isolate it a bit. It will replace your three
1-to-Many relationships with a single 1-to-Many relationship and three 1-to-1
relationships.
My alternative involves an intermediate 'generic' source record table. A
source record would be generated on that table for each of the 3 sources of
data. A single record would also be generated on one of the specific source
data tables (thus there would be a 1-to-1 relationship between the generic
source table and any of the 3 specific source tables).
The 'generic' source table would be related to the Patient Diagnosis table as
follows:
PatientDiagnosis <<---> GenericSource (M-1)
The 'generic' source table would have 3 1-to-1 relationships:
GenericSource <---> Source1 (1-1)
GenericSource <---> Source2 (1-1)
GenericSource <---> Source3 (1-1)
This is generally the approach that I would take, however the situation you
have described still leaves a lot of questions in my mind. For instance, I
would presume that the same identical diagnosis would be repeated on different
source of data for a patient. I was in an auto accident a few years ago and
went to the hospital with a concussion. That would be on my hospital records
and on the medical history that I would fill out. How would this be handled?
Would there be a single Patient Diagnosis record for this concussion? If so,
would you still want your database to be able to associate it with the 2
separate source of data?
Below is a tentative first-stab and partial table design of some of the
pertinent records. (If this were my database, I'd still have a lot more
questions.)
tblPatientDiagnosis
___________________
*PatientID
*DiagnosisCode
*DiagnosisDate
DataSourceID (this is a unique ID assigned to a source record)
tblPatientDataSource (this is the 'generic' source table)
--------------------
*DataSourceID (a unique ID assigned to a source record)
DataSourceType
PatientID
Date
(other data common to all 3 sources)
tblPatientHospitalRecord ( 'Source1' )
------------------------
*DataSourceID
PatientID
(other data unique to Source1)
tblPatientMedicalHistory ( 'Source2' )
------------------------
*DataSourceID
PatientID
(other data unique to Source2)
tblPatientClinicExam ( 'Source3' )
--------------------
*DataSourceID
PatientID
ExamNbr
(other data unique to Source3)
tblDiagnosis
------------
*DiagnosisCode
DiagnosisDescription
Rick