Ce sujet s’inspire du sujet 6 du bac de NSI 2024

MCD et MLD

Les personnels sont essentiellement des pompiers.

Un agrès est un équipage de véhicule prêt à intervenir un certain jour.
Un agrès est composé uniquement de pompiers de gardes ou d’astreintes.
Dans un “agrès”, il y a entre 1 et 4 personnels (pompiers). Il y a forcément un chef d’agrès et un conducteur. Le conducteur peut être le chef d’agrès.

Cet équipage (agrès) peut faire partie des moyens utilisés sur une intervention.

Une intervention se compose de moyens : 1 ou plusieurs agrès envoyé(s) sur l’intervention.

Exercice 1 :

Dessiner le MCD qui correspond au Modèle logique ci-dessus ; Utiliser le fichier looping

Exercice 2 :
DROP TABLE IF EXISTS xx;
DROP TABLE IF EXISTS  xx;
DROP TABLE IF EXISTS  xx;
DROP TABLE IF EXISTS  xx;


-- Création de la table agres
CREATE TABLE agres (
    id_agres INT,     -- Identifiant de l'agrès
    jour_pret DATE NOT NULL,      -- Jour où l'agrès se tient prêt
    type_vehicule VARCHAR(50) NOT NULL,    -- Type de véhicule
    chef_agres INT NOT NULL,      -- Identifiant du chef d'agrès (référence à personnel)
    conducteur INT NOT NULL,      -- Identifiant du conducteur (référence à personnel)
    chef_equipe INT,              -- Identifiant du chef d'équipe (référence à personnel, si nécessaire, sinon NULL)
    equipier INT,                 -- Identifiant de l'équipier (référence à personnel, si nécessaire, sinon NULL)
);

-- Création de la table intervention
CREATE TABLE intervention (
    id_intervention INT,     -- Identifiant de l'intervention
    jour_debut DATE NOT NULL,            -- Jour de début de l'intervention
    heure_debut TIME NOT NULL            -- Heure de début de l'intervention
);


-- Création de la table personnel
CREATE TABLE personnel (
    matricule INT,    -- Matricule unique du pompier
    nom VARCHAR(255) NOT NULL,    -- Nom du pompier
    qualification VARCHAR(50) NOT NULL,    -- Qualification (codée)
    actif TINYINT(1) NOT NULL     -- 1 si actif, 0 si inactif
);


-- Création de la table moyen
CREATE TABLE moyen (
    id_agres INT,                     -- Identifiant de l'agrès appelé
    id_intervention INT,              -- Identifiant de l'intervention
);

INSERT INTO moyen (id_agres, id_intervention) VALUES
(0, 0),
(2, 3),
(2, 4),
(3, 4),
(4, 4),
(9, 5),
(17, 6),
(22, 7),
(23, 8),
(24, 8),
(24, 9);

INSERT INTO agres (id_agres, jour_pret, type_vehicule, chef_agres, conducteur, chef_equipe, equipier) VALUES
(0, '2023-11-21', 'VSAV', 83, 9153, NULL, 10),
(2, '2024-02-15', 'VSAV', 2674, 4044, NULL, 8641),
(3, '2024-02-15', 'FPT', 9153, 5301, 8682, 2501),
(4, '2024-02-15', 'VSAV', 83, 4671, NULL, 7450),
(7, '2024-02-29', 'VSAV', 9153, 3004, NULL, 2501),
(9, '2024-03-02', 'FPT', 2674, 5301, 8682, 8641),
(12, '2024-03-21', 'VTU', 3004, 5301, NULL, NULL),
(17, '2024-03-27', 'VSAV', 3004, 8682, NULL, 10),
(18, '2024-03-27', 'VSAV', 9153, 5301, NULL, 10),
(22, '2024-05-31', 'FPT', 9153, 4044, 7450, 8641),
(23, '2024-06-11', 'VTU', 83, 2674, NULL, NULL),
(24, '2024-06-11', 'VSAV', 3004, 4044, NULL, 7450);

INSERT INTO intervention (id_intervention, jour_debut, heure_debut) VALUES
(0, '2023-11-21', '12:32:21'),
(1, '2023-11-22', '22:20:00'),
(2, '2023-12-17', '23:17:30'),
(3, '2024-02-15', '01:44:06'),
(4, '2024-02-15', '12:15:00'),
(5, '2024-03-02', '04:58:12'),
(6, '2024-03-27', '13:07:18'),
(7, '2024-05-31', '05:17:12'),
(8, '2024-06-11', '05:38:17'),
(9, '2024-06-11', '15:08:56'),
(10, '2024-06-18', '07:42:33');

INSERT INTO personnel (matricule, nom, qualification, actif) VALUES
(10, 'Sam', 31, 1),
(16, 'Charlot', 10, 1),
(31, 'Red', 230, 1),
(83, 'Vaillante', 71, 1),
(2501, 'Marco', 11, 1),
(2674, 'Aicha', 231, 1),
(3004, 'Fatou', 71, 1),
(4044, 'Abdel', 191, 1),
(4671, 'Mamadou', 171, 1),
(5301, 'Zoe', 171, 1),
(7450, 'Medhi', 31, 1),
(8641, 'Gaia', 11, 1),
(8678, 'Kevin', 170, 1),
(8682, 'Marie', 11, 1),
(9153, 'Fred', 231, 1);
Exercice 3 : requête 3-1 :
  1. Proposer une requête qui renvoie le nombre d’agrès prêts à intervenir le 27 mars 2024
+----------------------+
| nbr_agres_2024_03_27 |
+----------------------+
|                    2 |
+----------------------+
Exercice 3 : requête 3-2 :
  1. Proposer une requête qui renvoie le nombre d’agrès engagés en intervention le 27 mars 2024.
+---------------------------------+
| nbr_agres_2024_03_27_dans_moyen |
+---------------------------------+
|                               1 |
+---------------------------------+
Exercice 3 : requête 3-3 :
  1. Proposer une requête qui renvoie sans répétition tous les noms des chefs d’agrès prévus le 15 février 2024 (afficher les noms dans un ordre lexicographique).
+-----------+
| nom       |
+-----------+
| Aicha     |
| Fred      |
| Vaillante |
+-----------+
Exercice 3 : requête 3-4 :
  1. Proposer une requête qui renvoie sans répétition tous les noms des chefs d’agrès engagés en intervention le 11 juin 2024, ainsi que leur nombre d’interventions (afficher les noms dans un ordre lexicographique).
+-----------+-----------------+
| nom       | nb_intervention |
+-----------+-----------------+
| Fatou     |               2 |
| Vaillante |               1 |
+-----------+-----------------+
Exercice 3 : requête 3-5 :
  1. Proposer une requête qui renvoie les agrès le 27 mars 2024 (nom de chaque responsable de l’agrès et identifiant de l’agrès), ainsi que le nombre d’interventions de chacun de ces agrès (afficher les noms dans un ordre lexicographique).
+----------------+----------+-------+
| nb_agres_inter | id_agres | nom   |
+----------------+----------+-------+
|              1 |       17 | Fatou |
|              0 |       18 | Fred  |
+----------------+----------+-------+
Exercice 3 : requête 3-6 :
  1. Proposer une requête qui renvoie sans répétition tous les noms des chefs d’agrès engagés en intervention le 11 juin 2024, ainsi que leur nombre d’intervention si ils ont été engagés dans au moins 2 interventions ce jour là (afficher les noms dans un ordre lexicographique).
+-------+-----------------+
| nom   | nb_intervention |
+-------+-----------------+
| Fatou |               2 |
+-------+-----------------+