Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 4

CREATE DATABASE IF NOT EXISTS `pfe` !

40100 DEFAULT CHARACTER SET utf8mb4 COLLATE


utf8mb4_0900_ai_ci !80016 DEFAULT ENCRYPTION='N' ;
USE `pfe`;

CREATE TABLE IF NOT EXISTS `reclamation` (


`id` int NOT NULL AUTO_INCREMENT,
`sujet` varchar(255) NOT NULL DEFAULT '0',
`contenue` varchar(1000) NOT NULL DEFAULT '0',
`departement_concerne` varchar(1000) CHARACTER SET utf8mb4 COLLATE
utf8mb4_0900_ai_ci NOT NULL DEFAULT '0',
`id_fonctionnel` varchar(20) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_0900_ai_ci;

/************************************************/
/************************************************/
/************************************************/
/************************************************/
/************************************************/

CREATE TABLE user (


id int(11) NOT NULL AUTO_INCREMENT,
username varchar(50) NOT NULL,
password varchar(255) NOT NULL,
email varchar(100) NOT NULL,
role varchar(50) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY email (email)
);

*************************************************/

CREATE TABLE departement (


id int(11) NOT NULL AUTO_INCREMENT,
nom varchar(100) NOT NULL,
chef_departement_id int(11) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (chef_departement_id) REFERENCES user(id)
);

**************************************************

CREATE TABLE service (


id int(11) NOT NULL AUTO_INCREMENT,
nom varchar(100) NOT NULL,
departement_id int(11) DEFAULT NULL,
chef_service_id int(11) DEFAULT NULL,
PRIMARY KEY (id),
FOREIGN KEY (departement_id) REFERENCES departement(id),
FOREIGN KEY (chef_service_id) REFERENCES user(id)
);

*************************************************
CREATE TABLE reclamation (
id int(11) NOT NULL AUTO_INCREMENT,
id_fonctionnel varchar(20) NOT NULL,
nom_client varchar(50) NOT NULL,
telephone varchar(20) NOT NULL,
email varchar(50) NOT NULL,
category varchar(20) NOT NULL,
status varchar(20) NOT NULL,
description text,
created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
agent_id int(11) NOT NULL,
departement_id int(11) NOT NULL,
service_id int (11) Not null
PRIMARY KEY (id),
FOREIGN KEY (agent_id) REFERENCES user(id),
FOREIGN KEY (departement_id) REFERENCES departement(id)
FOREIGN KEY (service_id) REFERENCES service(id)

);

/**********************************************

CREATE TABLE intervention (


id int(11) NOT NULL AUTO_INCREMENT,
titre varchar(20) NOT NULL,
status varchar(20) NOT NULL,
created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
description text,
createur_id int(11) DEFAULT NULL,
reclamation_id int(11) DEFAULT NULL,
departement_id int(11) NOT NULL,
service_id int (11) Not NULL
PRIMARY KEY (id),
FOREIGN KEY (createur_id) REFERENCES User(id),
FOREIGN KEY (reclamation_id) REFERENCES reclamation(id),
FOREIGN KEY (departement_id) REFERENCES departement(id)
FOREIGN KEY (service_id) REFERENCES service(id);
);

**************************************************

CREATE TABLE intervention_historique (


id INT AUTO_INCREMENT PRIMARY KEY,
intervention_id INT NOT NULL,
titre VARCHAR(20) NOT NULL,
status VARCHAR(20) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
intervention_created TIMESTAMP,
description text,
createur_id INT DEFAULT NULL,
reclamation_id INT DEFAULT NULL,
departement_id INT NOT NULL,
service_id int (11) Not NULL,
change_par INT NOT NULL,
FOREIGN KEY (createur_id) REFERENCES User(id),
FOREIGN KEY (reclamation_id) REFERENCES reclamation(id),
FOREIGN KEY (departement_id) REFERENCES departement(id),
FOREIGN KEY (service_id) REFERENCES service(id);
FOREIGN KEY (change_par) REFERENCES User(id),
FOREIGN KEY (intervention_id) REFERENCES Intervention(id)
);

*************************************************

CREATE TABLE intervention_services (


intervention_id int(11) NOT NULL,
service_id int(11) NOT NULL,
PRIMARY KEY (intervention_id, service_id),
FOREIGN KEY (intervention_id) REFERENCES intervention(id),
FOREIGN KEY (service_id) REFERENCES service(id)
);

*************************************************

CREATE TABLE intervention_techniciens (


intervention_id int(11) NOT NULL,
technicien_id int(11) NOT NULL,
PRIMARY KEY (intervention_id, technicien_id),
FOREIGN KEY (intervention_id) REFERENCES intervention(id),
FOREIGN KEY (technicien_id) REFERENCES user(id)
);

*************************************************

SELECT
i.id,
i.titre,
i.status,
i.created_at,
i.description,
i.createur_id,
i.reclamation_id,
i.departement_id,
GROUP_CONCAT(s.nom SEPARATOR ', ') AS service
FROM
intervention i
JOIN
intervention_services its ON i.id = its.intervention_id
JOIN
service s ON its.service_id = s.id
GROUP BY
i.id;

You might also like