@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',
        ];
    }
  • Вопрос задан
  • 118 просмотров
Решения вопроса 1
delphinpro
@delphinpro Куратор тега Laravel
frontend developer
Разве не проще и отпимизированее просто перезаписывать колонку в таблице юзеров с ролями?

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

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

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

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

Похожие вопросы