EXAMEN NORMAL — IGL234 : GÉNIE LOGICIEL & BASES DE DONNÉES
Session 2
Module : IGL234 — Génie Logiciel & Bases de Données
Niveau : Licence en Informatique
Durée : 3 heures | Note totale : 20 points
Année académique : 2025–2026
Consignes générales : Les quatre (4) parties sont indépendantes. Toutes les questions sont obligatoires. Soignez la présentation, justifiez vos réponses et rédigez les algorithmes dans le formalisme pseudo-code vu en cours.
PARTIE I — Techniques de Tris et de Recherche
Barème : 5 points | Durée conseillée : 45 min
Contexte professionnel
Vous êtes développeur(se) dans la direction informatique de la Banque Atlantique Yaoundé. Le directeur des opérations vous demande de concevoir deux modules algorithmiques pour traiter la liste des numéros de comptes clients (représentés par des entiers) stockés dans un tableau en mémoire vive. Il s’agit d’optimiser les traitements quotidiens de la banque.
Exercice 1 — Technique de Tri à Bulle (2,5 points)
Le service informatique dispose d’un tableau Comptes[1..80] contenant les numéros de 80 comptes bancaires (des entiers naturels) dans un ordre quelconque.
Travail demandé :
-
(0,5 pt) Expliquez en vos propres mots le principe du tri à bulle (3 à 5 lignes). Pourquoi appelle-t-on cet algorithme « tri à bulle » ?
-
(1,5 pt) Écrivez une procédure algorithmique
TrierComptesqui :- Prend en entrée le tableau
Comptes[1..80]d’entiers naturels et la taillen = 80. - Applique le tri à bulle pour classer les numéros de comptes dans l’ordre croissant (du plus petit au plus grand).
- Affiche tous les numéros triés à l’écran.
Utilisez les variables
i,j,temp(entiers) conformément à l’algorithme du cours. - Prend en entrée le tableau
-
(0,5 pt) Un collègue propose d’utiliser le tri par sélection à la place. Donnez une différence fondamentale entre le tri à bulle et le tri par sélection du point de vue du nombre d’échanges effectués.
Exercice 2 — Technique de Recherche Séquentielle avec Sentinelle (2,5 points)
Un conseiller clientèle cherche rapidement dans le tableau Comptes[1..80] (non trié à ce stade) si le compte numéro N_Cible existe parmi les comptes de la banque.
Travail demandé :
-
(0,5 pt) Expliquez le rôle de la sentinelle dans la recherche séquentielle. Quel problème technique résout-elle par rapport à la recherche séquentielle simple ?
-
(1,5 pt) Écrivez une fonction
RechercherComptequi :- Prend en paramètres : le tableau
Comptes[1..80], la tailleN = 80, la valeur cibleN_Cible(entier), et une variablepos(entier, passé en référence). - Place la sentinelle à la position
N+1du tableau. - Retourne
Vraiet mémorise la position danspossi le compte est trouvé,Fauxsinon.
- Prend en paramètres : le tableau
-
(0,5 pt) La recherche séquentielle avec sentinelle est-elle applicable si le tableau est trié ? Est-elle plus efficace que la recherche dichotomique dans ce cas ? Justifiez brièvement.
PARTIE II — Concepts de Normalisation (1NF, 2NF, 3NF)
Barème : 5 points | Durée conseillée : 50 min
Contexte professionnel
Vous rejoignez le service informatique de l’Hôpital Central de Bafoussam. Le médecin-chef souhaite informatiser le suivi des consultations médicales. Une secrétaire a tenu jusqu’ici un registre papier retranscrit dans Excel, que l’on vous remet pour créer la base de données relationnelle du service.
Exercice 1 — Vérification de la 1NF et passage à la 2NF (2,5 points)
Voici la table brute issue du registre Excel :
Table CONSULTATION (non normalisée) :
| N°Consult | DateConsult | Matricule_Pat | NomPatient | Maladies_Diagnostiquées | Code_Med | NomMédecin | Service_Med |
|---|---|---|---|---|---|---|---|
| C001 | 2026-01-10 | PAT001 | TCHINDA Marc | Paludisme, Anémie | MED01 | Dr. FOTSO | Médecine Interne |
| C002 | 2026-01-11 | PAT002 | ONDOA Rose | Hypertension | MED02 | Dr. ABENA | Cardiologie |
| C003 | 2026-01-12 | PAT001 | TCHINDA Marc | Paludisme | MED01 | Dr. FOTSO | Médecine Interne |
La clé supposée est (N°Consult, Code_Med).
Travail demandé :
-
(0,5 pt) Cette table respecte-t-elle la 1NF ? Identifiez précisément la ou les violations et proposez comment les corriger pour mettre la table en 1NF.
-
(1,0 pt) Une fois la table en 1NF, identifiez toutes les dépendances fonctionnelles partielles (attributs qui dépendent d’une seule partie de la clé composée
(N°Consult, Code_Med)). Présentez-les sous la forme :Attribut → [N°Consult | Code_Med] : explication -
(1,0 pt) Décomposez la table en 2NF : donnez le schéma complet de chaque table obtenue (nom, attributs, clé primaire soulignée, clés étrangères éventuelles).
Exercice 2 — Passage à la 3NF (2,5 points)
À l’issue de l’exercice 1, on suppose que vous avez obtenu la table suivante en 2NF :
Table MEDECIN :
| Code_Med | NomMédecin | Code_Service | Nom_Service | Chef_Service | Bureau_Chef |
|---|---|---|---|---|---|
| MED01 | Dr. FOTSO | SRV_MED | Médecine Interne | Pr. NJIEMO | Bât. A - B1 |
| MED02 | Dr. ABENA | SRV_CARD | Cardiologie | Pr. MEUGANG | Bât. B - C2 |
| MED03 | Dr. KENNE | SRV_MED | Médecine Interne | Pr. NJIEMO | Bât. A - B1 |
La clé primaire est Code_Med.
Travail demandé :
-
(0,5 pt) Vérifiez si la table
MEDECINest en 2NF (argumentez en vérifiant si tous les attributs dépendent de la totalité de la cléCode_Med). -
(1,0 pt) Identifiez les dépendances transitives dans cette table.
- Représentez-les sous la forme
Clé → A → B. - Décrivez l’anomalie de mise à jour concrète qui en résulte (exemple : que se passe-t-il si le chef du service Médecine Interne change ?).
- Représentez-les sous la forme
-
(1,0 pt) Décomposez la table
MEDECINpour obtenir un schéma en 3NF. Donnez le schéma complet de chaque table (nom, attributs, clé primaire soulignée, clés étrangères).
PARTIE III — Tri à Bulles
Barème : 5 points | Durée conseillée : 40 min
Contexte professionnel
Vous travaillez comme ingénieur(e) logiciel pour AgroTech SARL, une entreprise agro-alimentaire de la région de l’Ouest Cameroun qui gère des tournées de collecte de récoltes chez des agriculteurs. Chaque semaine, les quantités récoltées (en kilogrammes) sont saisies dans un tableau. Votre rôle est d’écrire les algorithmes de traitement de ces données.
Exercice 1 — Trace manuelle et algorithme du Tri à Bulles (2,5 points)
Le tableau des quantités récoltées (en kg) cette semaine auprès de 7 agriculteurs est :
Récolte = [32, 75, 18, 94, 47, 12, 60]
Travail demandé :
-
(1,0 pt) Effectuez manuellement les deux premiers passages complets du tri à bulles sur ce tableau (passage
i = 7, puisi = 6). Pour chaque passage, listez toutes les comparaisons effectuées et indiquez les échanges réalisés en montrant l’état du tableau après chaque échange. -
(1,0 pt) Écrivez la procédure algorithmique
TrierRécoltesqui :- Prend en entrée un tableau
Récolte[1..n]d’entiers et la taillen. - Applique le tri à bulle pour trier les quantités en ordre croissant.
- Affiche le tableau trié.
- Prend en entrée un tableau
-
(0,5 pt) Pour un tableau déjà trié de taille
n, combien de comparaisons le tri à bulles standard (sans optimisation) effectue-t-il ? Donnez la valeur numérique pourn = 7.
Exercice 2 — Tri à Bulles modifié et analyse (2,5 points)
Le directeur d’AgroTech veut afficher les quantités récoltées du maximum au minimum pour récompenser les meilleurs agriculteurs en priorité. Il veut également un algorithme capable de s’interrompre dès que les données sont triées.
Travail demandé :
-
(0,5 pt) Pour trier en ordre décroissant avec le tri à bulle, quelle modification doit-on apporter à la condition d’échange ? Donnez la condition originale et la condition modifiée.
-
(1,5 pt) Écrivez la procédure algorithmique
TrierRécoltesDescendantqui :- Prend en entrée un tableau
Récolte[1..n]et la taillen. - Implémente le tri à bulles optimisé (avec un booléen
échangé) en ordre décroissant. - Si aucun échange n’a été effectué lors d’un passage, la procédure s’arrête immédiatement.
- Affiche le tableau résultant après le tri.
- Prend en entrée un tableau
-
(0,5 pt) Supposons que le tableau
Récoltesoit déjà trié par ordre décroissant dès le départ. Combien de passages la version optimisée effectue-t-elle ? Combien de comparaisons sont réalisées ? Donnez la complexité dans ce cas.
PARTIE IV — Administration de Bases de Données et SQL
Barème : 5 points | Durée conseillée : 45 min
Contexte professionnel
Vous êtes DBA (Administrateur de Bases de Données) de la société TelecomBTP Cameroun, une entreprise de génie civil qui gère des chantiers à travers le pays. Le directeur informatique vous confie la création et l’administration de la base de données GestionChantiers_DB, ainsi que la rédaction de requêtes SQL pour le tableau de bord mensuel.
Exercice 1 — Création, Sécurité et Stratégie de Haute Disponibilité (2,5 points)
Travail demandé :
-
(1,0 pt) Rédigez les instructions SQL (DDL) pour :
- Créer la base
GestionChantiers_DB. - Créer la table
Chantiersavec les colonnes :ID_Chantier(entier, clé primaire, auto-incrémenté),Nom_Chantier(chaîne 150 caractères, non null),Ville(chaîne 80 caractères),Budget_FCFA(décimal 15,2, valeur > 0),Date_Debut(date),Date_Fin_Prevue(date). - Créer la table
Employes_Chantieravec :ID_Employe(entier, clé primaire, auto-incrémenté),Nom_Employe(chaîne 100 caractères, non null),Poste(chaîne 80 caractères),Salaire_Mensuel(décimal 10,2),ID_Chantier(entier, clé étrangère versChantiers).
- Créer la base
-
(0,5 pt) Rédigez la commande SQL pour :
- Accorder les droits
SELECTetINSERTsur la tableChantiersà l’utilisateurchef_projet. - Révoquer uniquement le droit
INSERTde ce même utilisateur par la suite.
- Accorder les droits
-
(1,0 pt) La direction craint une perte de données en cas de panne serveur. Expliquez les concepts de RPO (Recovery Point Objective) et RTO (Recovery Time Objective) vus en cours. Proposez, pour TelecomBTP, une politique de sauvegarde concrète (fréquence, type) en justifiant votre choix.
Exercice 2 — Requêtes SQL d’Interrogation et de Manipulation (2,5 points)
Table Chantiers :
| ID_Chantier | Nom_Chantier | Ville | Budget_FCFA | Date_Debut | Date_Fin_Prevue |
|---|---|---|---|---|---|
| 1 | Route Bafoussam-Mbouda | Bafoussam | 500000000.00 | 2025-01-15 | 2026-06-30 |
| 2 | Pont Wouri Extension | Douala | 1200000000.00 | 2025-06-01 | 2027-12-31 |
| 3 | École Primaire Dschang | Dschang | 45000000.00 | 2026-01-10 | 2026-09-30 |
| 4 | Centre de Santé Limbé | Limbé | 78000000.00 | 2026-02-01 | 2026-11-15 |
Table Employes_Chantier :
| ID_Employe | Nom_Employe | Poste | Salaire_Mensuel | ID_Chantier |
|---|---|---|---|---|
| 1 | NGUEMY Bertrand | Ingénieur | 450000.00 | 1 |
| 2 | DJOUMBI Awa | Contremaître | 280000.00 | 1 |
| 3 | SIMO Patrick | Ingénieur | 480000.00 | 2 |
| 4 | MBASSA Claire | Architecte | 520000.00 | 2 |
| 5 | ETONA Jules | Contremaître | 260000.00 | 3 |
| 6 | NDONGO Pierre | Ingénieur | 470000.00 | 4 |
Travail demandé :
-
(0,5 pt) Rédigez la requête SQL qui affiche pour chaque chantier le nom du chantier, le nombre d’employés affectés et la masse salariale mensuelle totale, triés par masse salariale décroissante.
-
(0,5 pt) Rédigez la requête SQL qui liste les chantiers dont le budget dépasse 100 000 000 FCFA, en affichant le nom du chantier, la ville et le budget, triés par budget décroissant.
-
(0,5 pt) Rédigez la requête SQL qui affiche le salaire moyen, le salaire minimum et le salaire maximum parmi tous les employés ayant le poste
'Ingénieur'. -
(1,0 pt) Le chantier
'École Primaire Dschang'est terminé avec un mois d’avance. Rédigez les instructions SQL pour :- Mettre à jour la
Date_Fin_Prevuedu chantier 3 à la date'2026-08-30'. - Supprimer de la table
Employes_Chantiertous les employés affectés au chantier 3. - Encapsuler ces deux opérations dans une transaction (
START TRANSACTION,COMMIT).
- Mettre à jour la
— Fin de l’examen Session 2 — Bon courage à toutes et à tous —
Barème récapitulatif :
Partie Thème Exercice 1 Exercice 2 Total I Tri à Bulle & Recherche avec Sentinelle 2,5 pts 2,5 pts 5 pts II Normalisation 1NF → 2NF → 3NF 2,5 pts 2,5 pts 5 pts III Tri à Bulles (Trace & Optimisation décroissante) 2,5 pts 2,5 pts 5 pts IV Administration BD & SQL 2,5 pts 2,5 pts 5 pts Total 10 pts 10 pts 20 pts
Prêt à passer à la suite ?
Vous avez terminé cette leçon sur EXAMEN NORMAL — IGL234 : GÉNIE LOGICIEL & BASES DE DONNÉES. Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.