Хранение отдельных полей для каждой роли не очень хорошая идея. Если вы хотите добавить другую роль, вам необходимо обновить структуру базы данных.
Вы можете сделать две вещи IMO:
поле SET
Создайте поле set
, в котором вы можете определить любые роли, которые пользователь имеет только в одном значении, для этого все равно потребуется изменить таблицу, если вы хотите добавить новую роль, но, по крайней мере, не добавит другое поле таблица
М: М стол
Создание таблицы M: M (многие ко многим), которая будет связывать роли с пользователями. Это решение не требует изменения базы данных, если вы хотите добавить другую роль
CREATE TABLE `users` (
id INT AUTO INCREMENT,
login VARCHAR(100) NOT NULL,
password CHAR(32) NOT NULL,
PRIMARY KEY (id)
)
CREATE TABLE `roles` (
id INT AUTO INCREMENT,
name VARCHAR(50) NOT NULL,
PRIMARY KEY (id)
)
CREATE TABLE `user_roles` (
user_id INT,
role_id INT
)
Я бы также добавил ограничение к таблице ролей пользователей, которое обеспечит правильность идентификаторов в этой таблице, но я не буду добавлять их в этом примере, чтобы просто было проще. Подробнее об этом вы можете узнать здесь