Я ищу правильное решение для структуры базы данных с учетом прав пользователей.
Таблица:
users
companies
(соответствующие столбцы: id
)
projects
(соответствующие столбцы: id
, company_id
)
jobs
(соответствующие столбцы: id
, company_id
, project_id
)
Сценарии, которые я хочу выполнить, - назначить определенного пользователя и / или пользователей на:
- все проекты внутри компании («Синди назначена на все проекты и все рабочие места в компании»)
- выбор проектов внутри компании («Синди назначена на три из пяти проектов и назначена на все рабочие места в этих трех проектах»)
- выбранные работы в рамках проекта (ов) («Синди назначена на пять из десяти работ в рамках одного проекта и две работы в другом проекте»)
Я думаю об отдельной таблице permissions
, в которую я просто вставляю разрешения для соответствующих заданий и использую соответствующие столбцы из таблицы jobs
для каскадирования разрешений вверх. Другими словами - если у пользователя есть разрешение на конкретную работу, он также имеет разрешение для родительского проекта и головной компании.
SQL Fiddle: http://sqlfiddle.com/#!9/74a4d3/2