@Huntgold

Нужно ли делать таблицу для ролей с foreign key или простое переназначение по string?

Нужно ли делать таблицу для ролей с foreign key или можно и достаточно сделать простое переназначение по string? Не совсем понимаю, для чего нужна отдельная таблица для ролей с foreign key или подобный вариант снизу. Разве не проще и отпимизированее просто перезаписывать колонку в таблице юзеров с ролями?

Пример как еще делают. Для чего такие извращения?:
const ROLE_ADMIN = 0;
    const ROLE_READER = 1;

    public static function getRoles () {
        return [
            self::ROLE_ADMIN => 'Admin',
            self::ROLE_READER => 'Reader',
        ];
    }
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
delphinpro
@delphinpro
frontend developer
Разве не проще и отпимизированее просто перезаписывать колонку в таблице юзеров с ролями?

В этом случае у юзера может быть только одна роль. Если для вашей системы этого достаточно, то ок.
Но иногда пользователи могут иметь несколько ролей. А у каждой роли могут быть свои наборы разрешений. Тогда заводят несколько таблиц
users
roles
permissions
role_user
permission_role
permission_user (опционально)

Между ними настраивают соответствующие связи, как на уровне БД для сохранения целостности данных (FK), так и на уровне приложения (отношения many-to-many) для манипуляции этими сущностями.
Для оптимизации набор разрешений для ролей и пользователей может кэшироваться.

Для дополнительной информации гуглите про контроль доступа на основе ролей (RBAC).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы