sqlCREATE TABLE roles (
id INT AUTO_INCREMENT PRIMARY KEY,
nom VARCHAR(30) NOT NULL UNIQUE
);
CREATE TABLE permissions (
id INT AUTO_INCREMENT PRIMARY KEY,
code VARCHAR(50) NOT NULL UNIQUE -- 'notes.saisir', 'stagiaires.gerer'…
);
CREATE TABLE role_permission ( -- association plusieurs-à-plusieurs (M106)
role_id INT NOT NULL,
permission_id INT NOT NULL,
PRIMARY KEY (role_id, permission_id),
FOREIGN KEY (role_id) REFERENCES roles(id),
FOREIGN KEY (permission_id) REFERENCES permissions(id)
);
CREATE TABLE utilisateur_role (
utilisateur_id INT NOT NULL,
role_id INT NOT NULL,
PRIMARY KEY (utilisateur_id, role_id),
FOREIGN KEY (utilisateur_id) REFERENCES utilisateurs(id),
FOREIGN KEY (role_id) REFERENCES roles(id)
);
INSERT INTO roles (id, nom) VALUES (1, 'stagiaire'), (2, 'formateur'), (3, 'admin');
INSERT INTO permissions (id, code) VALUES
(1, 'notes.voir_les_siennes'), (2, 'notes.saisir'), (3, 'stagiaires.gerer'), (4, 'utilisateurs.gerer');
INSERT INTO role_permission VALUES (1, 1), (2, 2), (3, 2), (3, 3), (3, 4);