Логика уровня пользователя

У меня есть проект, над которым я работаю, и я изучал наличие уровней пользователя и рекомендуемых и безопасных способов сделать это. В проекте будут более сложные вещи, такие как группы, пользователи, страницы, чат, и я не хочу вносить некоторые изменения сейчас, и мне потребуется изменить логику, когда я добавлю другие функции. Я хотел бы получить совет или помощь по этому вопросу, я был бы очень признателен.

То, как я думал, было либо

  1. Есть таблица с именем userlevels (например) с 3 столбцами ID, Name, Permissions

    1, user
    
    2, Administrator, {"admin": 1}     with json
    

ИЛИ ЖЕ

  1. Иметь дополнительную строку с разрешениями в таблице обычных пользователей и иметь строку, например,

    is_admin  [0,1]
    

Можно ли так делать? Если у вас есть какие-то другие идеи для меня, я был бы очень признателен. Заранее спасибо!

1 ответ

Решение

Я предложу более нормализованное решение, которое должно быть абсолютно гибким в будущем.

  1. Таблица пользователей:

    UserID (PK) 
    UserName
    
  2. Таблица разрешений

    PermissionId (PK)
    Permission
    
  3. Соединительная таблица для разрешения связи "многие ко многим" между пользователями и разрешениями

    UserID (FK to users)
    PermissionId (FK to permissions)
    

Другие вопросы по тегам