Для организации структуры базы данных для нескольких типов пользователей в MySQL можно использовать различные подходы. Следующий подход является общепринятым и эффективным:
1. Создайте таблицу "Users" для хранения общей информации о пользователях:
CREATE TABLE Users ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(255) NOT NULL, password VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL, registered_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
В этой таблице каждый пользователь будет иметь уникальный идентификатор (id), имя пользователя (username), пароль (password), адрес электронной почты (email) и дату регистрации (registered_at).
2. Создайте таблицу "UserRoles" для хранения типов пользователей:
CREATE TABLE UserRoles ( id INT PRIMARY KEY AUTO_INCREMENT, role VARCHAR(255) NOT NULL );
Здесь каждый тип пользователя будет иметь уникальный идентификатор (id) и название роли (role).
3. Создайте таблицу связи "UserRoleMapping" для связи пользователей с их типами:
CREATE TABLE UserRoleMapping ( user_id INT NOT NULL, role_id INT NOT NULL, FOREIGN KEY (user_id) REFERENCES Users(id), FOREIGN KEY (role_id) REFERENCES UserRoles(id), PRIMARY KEY (user_id, role_id) );
В этой таблице создается связь между идентификатором пользователя (user_id) и идентификатором типа пользователя (role_id). В этой таблице могут быть несколько записей для одного пользователя, если у него есть несколько типов.
Пример использования:
1. Добавление нового пользователя:
INSERT INTO Users (username, password, email) VALUES ('john_doe', 'password123', '[email protected]');
2. Добавление типа пользователя:
INSERT INTO UserRoles (role) VALUES ('admin');
3. Привязка типа пользователя к пользователю:
INSERT INTO UserRoleMapping (user_id, role_id) VALUES (1, 1); -- где 1 - это идентификатор пользователя, 1 - это идентификатор типа пользователя
Таким образом, используя данную структуру базы данных, можно легко организовать различные типы пользователей и управлять доступом их функций и возможностей в приложении.