После попытки и обсуждения этого с некоторыми коллегами я принял решение, которое могло бы быть полезным для других.
Я создал 5 новых таблиц. Первый -
<b>Program Event Table</b>
(Columns)
- Event ID
- Event Name
- Description
- More Fields
Второй -
<b>Program Participants Group Table</b>
(Columns)
- Group ID
- Group Name
- Description
- Mandatory Events Required
- Optional Events Required
- More Fields
Третий -
<b>Program Events Group Table</b>
(Columns)
- Event ID (FK)
- Group ID (FK)
- Mandatory (bit field)
- Optional (bit field)
- More items if required
Четвертый стол -
<b>Program Participants Table (listing the registered participants)</b>
(Columns)
- Participant ID
- Employee ID (FK)
- Group ID (FK)
- Batch ID (FK)
- More items if required
, а последний таблица
<b>Program Batch Table (For distinguishing between different batches)</b>
(Columns)
- Batch ID
- Batch Start Date
- Batch End Date
- More items if required
Я заполнил таблицу Группы программных событий списком событий, связанных с программой, и критериями их требований для каждой группы. Таким образом, если событие 01 - навык 01 требуется для группы 01 и является необязательным для группы 02, то в таблице групп программных событий будет 2 записи.
Event 01, Group 01, 1, 0, ...
Event 01, Group 02, 0, 1, ...
Но если Событие 08 - Навык 08 является опцией для Группы 02, но не требуется Группой 01, тогда в таблице будет только 1 запись.
Event 08, Group 02, 0, 1, ...
Теперь я добавил Идентификатор события из таблицы событий программы в существующую таблицу событий, поэтому, если новое событие принадлежит этой программе, будет добавлен идентификатор события программы. Таким образом, теперь используется существующая таблица участия и существующая таблица событий.