Я создаю систему, в которой задачи могут назначаться разным пользователям. Проблема в том, что задачи отображаются через строковый столбец, называемый получателем, который в конце концов сопоставляется с набором пользователей. Содержимое этого столбца может выглядеть следующим образом:
has:tasks-update,tasks-access
- пользователи с правами доступа tasks-update
и tasks-access
.
role:administrator
- пользователи с ролью администратора.
Прямо сейчас я решаю проблему проблематично. Это довольно легко, когда мне нужно выяснить, у кого есть доступ к конкретной задаче, но обременительно, когда пользователю нужно знать, какие задачи ему «назначены».
Прямо сейчас я разрешаю каждый столбец получателя, чтобы увидеть, включен ли пользователь, это, к сожалению, не очень выполнимо, так как это приводит к огромным потерям производительности.
У меня уже есть индексы в соответствующих столбцах для ускорения поиска.
Решение этой проблемы состояло в том, что я разрешал бы получателей при смене получателя и затем помещал отношения между пользователями и задачами в промежуточную таблицу. Хотя это позволяет мне быстро просматривать задачи, назначенные пользователю, это также становится проблематичным, поскольку теперь мне нужно отслеживать (например) каждый раз, когда пользователю была назначена роль администратора, и теперь синхронизировать это с промежуточной таблицей.
Я надеялся, что смогу получить представление о решении этой проблемы, не жертвуя при этом производительностью, как сейчас, но при этом мне не придется постоянно синхронизироваться.