I want to develop an Access database (which is supposed to hold about 10.000-20.000 records); right now I'm designing the tables and I'm facing a problem which gives me two options.
First, the database description: It will contain one 'wide' table - tblRequests - 48 fields, from which eight of them are foreign keys, which points to eight categories of persons. Those categories of persons have approx the same number of fields and field types.
The two options to implement these tables are:
Option A. I make one table for every category -> total = 8 tables. Then I link the eight tables to tblRequests.
Option B. (which is easier) - I will make only one table which will contain all the persons from every category; it will have ONE MORE FIELD, named 'Category' - showing the category of every person. Then I will link the ID of that table (tblPersons) to those eight foreign keys in tblRequests.
----------------------------------------------------------
Contra to Option B:
The reason for which I hesitate choosing Option B is that the fields necessary for every category is slightly different from one categ. to another, and there will be about 300-400 (out of 1500) records with 4-5 (or even six) fields empty => 'a little bit of DENORMALIZATION' (the persons from all the categories count together about 1500).
-----------------------------------------------------------
Pro to OptionB:
But there is a reason which makes me choose Option B
If I make a select query from tblRequests, including in the criteria several persons from several categories, then in which case the query will run faster: when I have eight normalised tables linked to tblRequests, or when I have ONLY ONE table linked to tblRequests ?
I don’t know in which of those two situations the SQL will work faster - (personally I think Option B – but I have no foundations) finally I think I will choose option B because it seems easier to implement
------------------------------------------------------------
Any help (or links) is much appreciated.
Thank you in advance.
First, the database description: It will contain one 'wide' table - tblRequests - 48 fields, from which eight of them are foreign keys, which points to eight categories of persons. Those categories of persons have approx the same number of fields and field types.
The two options to implement these tables are:
Option A. I make one table for every category -> total = 8 tables. Then I link the eight tables to tblRequests.
Option B. (which is easier) - I will make only one table which will contain all the persons from every category; it will have ONE MORE FIELD, named 'Category' - showing the category of every person. Then I will link the ID of that table (tblPersons) to those eight foreign keys in tblRequests.
----------------------------------------------------------
Contra to Option B:
The reason for which I hesitate choosing Option B is that the fields necessary for every category is slightly different from one categ. to another, and there will be about 300-400 (out of 1500) records with 4-5 (or even six) fields empty => 'a little bit of DENORMALIZATION' (the persons from all the categories count together about 1500).
-----------------------------------------------------------
Pro to OptionB:
But there is a reason which makes me choose Option B
If I make a select query from tblRequests, including in the criteria several persons from several categories, then in which case the query will run faster: when I have eight normalised tables linked to tblRequests, or when I have ONLY ONE table linked to tblRequests ?
I don’t know in which of those two situations the SQL will work faster - (personally I think Option B – but I have no foundations) finally I think I will choose option B because it seems easier to implement
------------------------------------------------------------
Any help (or links) is much appreciated.
Thank you in advance.