ниндзя, я понимаю, что это, вероятно, вопрос типа "слишком широкий" или "неправильный портал", но ТАК кажется, что я дома, поэтому я все равно попробую.
У меня есть стол с сотрудниками
Table: employee
id, name
1 - John
2 - Jane
3 - Obama
4 - Donald
... ничего особенного. И еще есть таблица компетенций (классификатор специальных задач / обязанностей)
competencies table:
id, name
1 - Janitor
2 - Sysadmin
3 - Programmer
4 - Pilot
...
Каждый сотрудник может иметь несколько компетенций (таблица отношений)
таблица: сотрудник_компетентность
id, employee_id, competency_id
1 - 1 - 1 - John is a Janitor
2 - 1 - 2 - John is also a Sysadmin (imagine that)
3 - 2 - 3 - Jane is a Programmer
4 - 3 - 3 - Obama is a Programmer
5 - 3 - 4 - ...and a Pilot
6 - 4 - 1 - Donald is a Janitor
Существующая проблема архитектуры базы данных или как обращаться с такими случаями.
Я хочу иметь возможность определять неограниченное количество компетенций, и эти компетенции могут варьироваться от одного клиента к другому (где будет установлен проект, который я программирую - каждая установка проекта может иметь различный набор компетенций)
В коде я хочу иметь возможность выбирать сотрудников с определенной компетенцией (например, перечислить всех сотрудников, которые являются пилотами) ....
Путем жесткого кодирования идентификатора компетенции при перечислении сотрудников я теряю способность свободно определять компетенции. Я мог бы определить пользовательские поля в таблице сотрудников, такие как is_janitor, is_sysadmin, is_programmer, is_pilot и т. Д. ... но тогда я теряю возможность определять неограниченное количество компетенций ...
Есть ли способ решить эту довольно XY-проблему другим подходом к архитектуре БД?