I have a database application that pretty much does this.
So you have a table of employees with information about employees. It would have an EmployeeID primary key.
Then you need a table of courses. This is generic information about a course and not specific information about an offering of a course.
This includes how long until you are required to renew the training (expiration) and if the course is a mandatory or optional. In your case I assume this is a generic table of SOPs with and SOP_ID instead of a training course ID
T_TrainingCourses
TrainingCourseID | Training_Title | Sponsoring_Organization | Type_Training | Required_Training | ExpirationInYears |
---|
386 | Food Handler Training | Chautauqua Cty DOH & Human Services | Classroom | No | 5 |
468 | NYS Basic EMT | NYS DOH | Classroom | No | 4 |
298 | TSG - GOLD Interrator Reliability - Preschool/UPK | Teaching Strategies | Online | No | 3 |
348 | TSG - Interrater Reliability -Infants/Toddlers | Teaching Strategies | Online | No | 3 |
357 | MAT - Renewal | PDP | Online | No | 3 |
Now I need a table to hold when an employee took the course. This is specific information about a course offering and in your case include how long it took to complete
This is called a junction table and allows you to create a Many_to_Many relationship linking a Course (SOP) to an Employee and on a given date.
T_Employees_TrainingCourses
ETCC_ID | EmployeeID_FK | TrainingCourseID_FK | Time_To_Complete | CourseDate | Certificate |
---|
67 | 15 | 42 | | 11/19/19 | Yes |
68 | 15 | 42 | | 05/09/19 | Yes |
69 | 16 | 46 | | 01/16/20 | No |
72 | 15 | 48 | | 08/11/20 | Yes |
96 | 5 | 80 | | 02/01/19 | No |
103 | 6 | 91 | | 09/04/19 | Yes |
105 | 5 | 91 | | 09/04/19 | Yes |
124 | 15 | 120 | | 06/03/20 | Yes |
127 | 5 | 124 | | 08/30/19 | Yes |
You can see in this snapshot that employee 15, 5, 6 took course on certain dates and some of these offerings provided a certificate
Using this simple organization I can show all completed training, as well as current training, expired training.
View attachment 114460
View attachment 114459
That is wrong. You cannot just plow forward with a broken design if you need to meet your objectives. Your database is not correctly designed so fix it now or you will be wrestling it with complicated workarounds for here on out.