Для одной программки нужно реализовать систему ролей пользователей. Есть Пользователь, Компания, Проект. Ну это для начала, потом будут ещё сущности. Вопрос, каким образом реализовать хранение в БД их ролей, чтобы потом на основе роли ПО могло распределять права доступа?
С первого взгляда, ничего сложного, казалось бы делаем таблицы:
USERS (id, name), COMPANY(id, name), COMPANIES_USERS(id, company_id, user_id), ROLE(id, title).
Но теперь, чтобы найти имена всех пользователей, имеющих роль «сотрудник» в компании «ООО Вектор» нужен запрос, включающий джойнами ВСЕ эти таблицы! А если будут ещё Проекты, Задания или ещё 10 сущностей, для каждой нужна будет таблица связей. Запрос, выдающий имена юзеров, которые имеют в компании права менеджеров и принадлежащих к определённому проекту меня пугает.
Или для SQL это нормально? Подпись: деверопер, привыкший к синтаксическому сахару ActiveRecord'a