Я немного запутался в том, как настроить мою таблицу. У меня есть три роли, которые можно выбрать с помощью флажка. При регистрации... если пользователь выбирает один и два... тогда эти страницы должны быть видимыми, если он выбрал одну и три, затем эти страницы, и если выберет кого-нибудь из них, то это будут одни...
Назовите страницу 1 как управление клиентом Управление счетами Page 3 Просмотр отчета
Если у меня есть отдельные поля для этих трех или один, достаточно.
Спасибо
Сохранение отдельных полей для каждой роли не является хорошей идеей. Если вы хотите добавить еще одну роль, вам нужно будет обновить структуру вашей базы данных.
Вы можете сделать две вещи: IMO:
Создайте поле set
, в котором вы можете определить любые роли, которые пользователь имеет только в одном значении, это все равно потребует ALTERing таблицы, если вы хотите добавить новую роль, но по крайней мере она не добавит еще одно поле в таблица
Создайте таблицу M: M (многие для многих), которая будет связывать роли с пользователями, это решение не требует изменения db, если вы хотите добавить другую роль
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
)
Я бы также добавил ограничение на таблицу ролей пользователей, которая будет следить за тем, чтобы в этой таблице находились правильные идентификаторы, но я не буду добавлять их в этом примере, чтобы просто сохранить его простым. Подробнее о том, что вы можете найти здесь