Как лучше всего хранить 10 вариантов в базе данных MySQL?
-
21-09-2019 - |
Вопрос
Я изменяю код своей сети PHP, чтобы в нем были «роли пользователей», такие как WordPress, вот мой план на данный момент.
0 = зарегистрированный пользователь без проверки электронной почты
1 = зарегистрированный и подтвержденный адрес электронной почты
2 = модератор
3-9 = пока ничего
10= администратор
В моем PHP-коде я буду использовать такой массив, который будет определять, что делает номер роли.
$user_role['10']
Я думал о сохранении значения, которое имеет пользователь, в моей базе данных MySQL. Будет ли это лучшим способом сохранить 10 различных параметров роли в виде перечисления или есть лучший или более быстрый способ?Я читал, что enum иногда не самый быстрый.
enum('0','1','2','3','4','5','6','7','8','9','10')
Решение
Наверное INT
или TINYINT
достаточно для хранения уровня пользователя (роли).Также вы можете рассмотреть возможность умножения чисел на 10, чтобы в будущем у вас было место для добавления новых уровней.
Другие советы
Используйте битовые маски для разрешений/уровней пользователя.
Видеть пример.