Hi
I’m returning to Access after a long break, and I’m remembering that the trickiest thing of all can be getting your tables and relationships right. I’d be grateful for any insights into how I can tackle the following brief.
I have to create a database that links people to applications for a project funding scheme. Each person can make one or more applications. Each application can have one or more persons named on it, since applications can come in from single individuals or teams of named individuals. A person named on an application can be either a Sole Applicant, a lead Applicant, or a Collaborator on any given application.
So far so good - I can model the situation with a Many-to-Many relationship as follows
tblPerson
-------------
PersonID (PK)
FirstName
LastName
EmailAddress
tblApplication
-------------------
ApplicationID (PK)
Title
ApplicationField1
ApplicationField2
etc …
tblPersonApplication (the junction table)
---------------------------
PersonaApplicationID (PK)
PersonID (FK)
ApplicationID (FK)
Role
From here I can build a query and form to update all three tables at once, and I can report on persons and their application history which is one of the main purposes of the database.
Here is where it gets complicated (for me). There probably won’t be just one funding scheme, there will be several, each with different application forms recording different things. The relationships described above will still have to hold between people and applications, but now there will be an Application for Funding Scheme A, and Application for Funding Scheme B, and so on.
Because the applications will likely be quite different, I assume they will need to have their own tables. To give trivial examples:
tblApplicationFundingSchemeA
-------------------
ApplicationFundingSchemeAID (PK)
Title
Date
Age
Hair colour
Height
…
tblApplicationFundingSchemeB
-------------------
ApplicationFundingSchemeBID (PK)
Title
Date
Eye colour
Shoe size
Weight
…
My instinct tells me it’s not a good idea to put all possible fields into one giant Application table, as this will result in a huge number of null values over time for one thing. But I can’t see how to work this requirement into my schema. If applications for different schemes have to be stored in different tables, I particularly can’t see how I could ever generate a query that would show me, for example
Person Scheme Date Title Role Bob A 02/09/2013 Clinical skills lab development Lead Applicant Bob B 09/16/2014 Advanced Life support seminars Collaborator
Hopefully I’ve explained the requirements clearly – please tell me if not. How could I go about modifying my schema to meet them?
Many thanks in anticipation
Peter