EXAMEN NORMAL — IGL234 : GÉNIE LOGICIEL & BASES DE DONNÉES
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 recruté(e) comme développeur(se) junior dans une entreprise de logistique nommée CargoNet Cameroun. Le responsable technique vous confie une mission urgente : optimiser la gestion d’un stock de produits stockés dans un tableau en mémoire. Votre chef de projet vous demande de coder deux modules algorithmiques distincts.
Exercice 1 — Technique de Tri par Sélection (2,5 points)
La base de données interne de CargoNet contient les quantités en stock de 50 produits (exprimées en entiers naturels) stockées dans un tableau Stock[1..50].
Travail demandé :
-
(0,5 pt) Expliquez brièvement le principe du tri par sélection (3 à 5 lignes maximum).
-
(1,5 pt) Écrivez une procédure algorithmique
TrierStockqui :- Prend en entrée le tableau
Stockde 50 entiers naturels. - Applique le tri par sélection pour trier les quantités dans l’ordre croissant.
- Affiche ensuite toutes les quantités triées.
Respectez le formalisme pseudo-code du cours :
Var,Début,FinPour,Si,FinSi, instructions terminées par;. - Prend en entrée le tableau
-
(0,5 pt) Indiquez la complexité temporelle de votre algorithme (en notation Grand O) et justifiez votre réponse en une phrase.
Exercice 2 — Technique de Recherche Dichotomique (2,5 points)
Après avoir trié le tableau Stock, le responsable veut pouvoir rechercher rapidement une quantité précise (par exemple : savoir si le stock contient exactement 340 unités d’un article et, si oui, à quelle position).
Travail demandé :
-
(0,5 pt) Expliquez pourquoi la recherche dichotomique n’est applicable que sur un tableau trié (2 à 3 lignes).
-
(1,5 pt) Écrivez une fonction
RechercherDichotomiquequi :- Prend en paramètres : le tableau
Stock[1..50], la taillen, la valeur à chercherval, et une variablepos(entier passé par référence pour mémoriser la position trouvée). - Retourne un booléen :
Vraisi la valeur est trouvée,Fauxsinon. - Utilise la méthode dichotomique vue en cours (variables
min,max,mil,trouvé).
- Prend en paramètres : le tableau
-
(0,5 pt) Comparez les complexités temporelles de la recherche séquentielle et de la recherche dichotomique dans le pire des cas. Laquelle recommandez-vous pour ce contexte ? Pourquoi ?
PARTIE II — Concepts de Normalisation (1NF, 2NF, 3NF)
Barème : 5 points | Durée conseillée : 50 min
Contexte professionnel
Vous intégrez la cellule Systèmes d’Information de l’Université des Montagnes. Le responsable de la DSI vous présente une feuille Excel utilisée depuis des années pour gérer les inscriptions pédagogiques des étudiants. Il vous demande d’analyser cette table et de la normaliser correctement afin d’alimenter la nouvelle base de données relationnelle.
Exercice 1 — Passage de la 1NF à la 2NF (2,5 points)
On vous soumet la table brute suivante (extraite de l’Excel) :
Table INSCRIPTION (non normalisée) :
| Matricule | NomEtudiant | Filière | CodeUE | IntituléUE | Crédit | NomEnseignant | Tel_Enseignant |
|---|---|---|---|---|---|---|---|
| ETU001 | KAMGA Paul | INFO-L2 | IGL234 | Génie Logiciel | 4 | Dr. NKEMBI | +237 690 000 01 |
| ETU001 | KAMGA Paul | INFO-L2 | MAT201 | Mathématiques Discrètes | 3 | Dr. FOUDA | +237 690 000 02 |
| ETU002 | BELLO Aïcha | RS-L2 | IGL234 | Génie Logiciel | 4 | Dr. NKEMBI | +237 690 000 01 |
| ETU002 | BELLO Aïcha | RS-L2 | SYS301 | Systèmes d’Exploitation | 4 | Mme. SONKENG | +237 690 000 03 |
La clé supposée est composée de (Matricule, CodeUE).
Travail demandé :
-
(0,5 pt) Vérifiez si cette table respecte la 1NF. Justifiez votre réponse en vérifiant les trois conditions de la 1NF.
-
(1,0 pt) Identifiez toutes les dépendances fonctionnelles partielles (attributs qui ne dépendent que d’une partie de la clé composée). Présentez vos résultats sous la forme :
Attribut → Partie de la clé dont il dépend : [raison] -
(1,0 pt) Décomposez la table
INSCRIPTIONen tables satisfaisant la 2NF. Donnez le schéma de chaque table obtenue en précisant :- Le nom de la table
- Ses attributs (en soulignant la clé primaire)
- Les clés étrangères éventuelles
Exercice 2 — Passage de la 2NF à la 3NF (2,5 points)
À l’issue de l’exercice 1, on suppose que vous avez obtenu (entre autres) la table suivante en 2NF :
Table ETUDIANT :
| Matricule | NomEtudiant | CodeFilière | NomFilière | ResponsableFilière |
|---|---|---|---|---|
| ETU001 | KAMGA Paul | INFO-L2 | Informatique | Dr. TCHAMBA |
| ETU002 | BELLO Aïcha | RS-L2 | Réseaux | Pr. MOFFO |
| ETU003 | TABI Rémi | INFO-L2 | Informatique | Dr. TCHAMBA |
La clé primaire est Matricule.
Travail demandé :
-
(0,5 pt) Vérifiez si la table
ETUDIANTest en 2NF (tous les attributs dépendent-ils de la totalité de la cléMatricule?). Expliquez brièvement. -
(1,0 pt) Identifiez la ou les dépendances transitives présentes dans cette table. Représentez-les graphiquement sous la forme :
Matricule → CodeFilière → NomFilière, ResponsableFilièreExpliquez en quoi cette dépendance constitue un problème (anomalie de suppression, mise à jour, insertion).
-
(1,0 pt) Décomposez la table
ETUDIANTen tables satisfaisant la 3NF. Donnez le schéma complet de chaque table obtenue (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 êtes ingénieur(e) logiciel dans une société de courtage financier, FinTech Solutions Douala. Le département des opérations vous confie la gestion d’un tableau de cours boursiers journaliers. Vous devez développer deux modules algorithmiques basés sur le tri à bulles pour aider les analystes dans leur travail quotidien.
Exercice 1 — Application du Tri à Bulles et Trace d’Exécution (2,5 points)
Le tableau des cours de clôture (en FCFA) de 6 actions cotées en bourse est le suivant :
Cours = [4500, 1200, 3800, 700, 2950, 150]
Travail demandé :
-
(1,0 pt) Effectuez manuellement les deux premiers passages du tri à bulles (boucle externe
i = 6puisi = 5) sur ce tableau. Présentez l’état du tableau après chaque échange effectué. -
(1,0 pt) Écrivez la procédure algorithmique
TrierBourseAscendantqui :- Prend en entrée un tableau
Cours[1..6]d’entiers naturels. - Applique le tri à bulles pour trier les cours en ordre croissant.
- Affiche le tableau trié après traitement.
Utilisez les variables :
i,j,temp(entiers) comme dans le cours. - Prend en entrée un tableau
-
(0,5 pt) Quel est le nombre total de comparaisons effectuées par le tri à bulles sur un tableau de taille n = 6 dans le pire des cas ? Donnez la formule générale et appliquez-la numériquement.
Exercice 2 — Tri à Bulles avec Optimisation et Affichage Inverse (2,5 points)
Le chef de service souhaite une deuxième fonctionnalité : afficher les cours boursiers en ordre décroissant (du plus élevé au plus bas) pour identifier rapidement les meilleures performances. Il souhaite également que l’algorithme soit optimisé pour s’arrêter dès que le tableau est trié (sans effectuer des passages inutiles).
Travail demandé :
-
(0,5 pt) Expliquez le principe de l’optimisation du tri à bulles avec un indicateur d’échange (
échangé : booléen). Quel est l’avantage dans le meilleur des cas ? -
(1,5 pt) Écrivez la procédure algorithmique
TrierBourseDescendantqui :- Prend en entrée un tableau
Cours[1..n](taille variablenpassée en paramètre). - Applique le tri à bulles optimisé (avec le drapeau
échangé) pour trier en ordre décroissant. - Affiche le tableau résultant.
Remplacez la condition d’échange : au lieu de
Tab[j-1] > Tab[j], utilisezTab[j-1] < Tab[j]pour l’ordre décroissant. - Prend en entrée un tableau
-
(0,5 pt) Dans quel cas le tri à bulles optimisé atteint-il sa meilleure complexité ? Donnez la valeur de cette complexité en notation Grand O et expliquez pourquoi.
PARTIE IV — Administration de Bases de Données et SQL
Barème : 5 points | Durée conseillée : 45 min
Contexte professionnel
Vous venez d’être nommé(e) Administrateur(trice) de Bases de Données (DBA) d’une PME camerounaise de vente en ligne, ShopCMR. Votre première mission consiste à créer et sécuriser la base de données de gestion des ventes, puis à rédiger des requêtes SQL pour les différents départements de l’entreprise.
Exercice 1 — Administration et Sécurité de la Base de Données (2,5 points)
Le directeur technique vous demande de concevoir et de sécuriser la base de données de ShopCMR selon les règles suivantes :
- La base doit contenir une table
Produitset une tableCommandes. - Le département Commercial ne doit avoir que des droits en lecture (
SELECT) sur la tableCommandes. - La base doit être sauvegardée chaque nuit.
Travail demandé :
-
(1,0 pt) Rédigez les instructions SQL (DDL) pour :
- Créer la base de données
ShopCMR_DB. - Créer la table
Produitsavec les colonnes suivantes :ID_Produit(entier, clé primaire, auto-incrémenté),Nom_Produit(chaîne 100 caractères, non null),Prix_Unitaire(décimal 10,2, valeur positive),Stock_Disponible(entier, valeur ≥ 0). - Créer la table
Commandesavec les colonnes :ID_Commande(entier, clé primaire, auto-incrémenté),ID_Produit(entier, clé étrangère versProduits),Quantite_Commandee(entier, non null),Date_Commande(date),Montant_Total(décimal 12,2).
- Créer la base de données
-
(0,5 pt) Rédigez l’instruction SQL pour accorder uniquement le droit de lecture sur la table
Commandesà l’utilisateurcommercial_user. Quelle est la commande inverse pour révoquer ce droit ? -
(1,0 pt) Le DBA précédent n’avait pas mis en place de système de sauvegarde. Expliquez (sans code) les deux types de sauvegardes vues en cours (logique et physique) et recommandez laquelle adopter pour ShopCMR. Justifiez votre choix en citant au moins deux avantages de celle que vous recommandez.
Exercice 2 — Requêtes SQL d’Interrogation et de Manipulation (2,5 points)
Voici le contenu des tables de ShopCMR après quelques semaines d’activité :
Table Produits :
| ID_Produit | Nom_Produit | Prix_Unitaire | Stock_Disponible |
|---|---|---|---|
| 1 | Téléphone A7 | 85000.00 | 42 |
| 2 | Casque Bluetooth | 15000.00 | 120 |
| 3 | Chargeur USB-C | 5000.00 | 0 |
| 4 | Tablette X10 | 150000.00 | 8 |
Table Commandes :
| ID_Commande | ID_Produit | Quantite_Commandee | Date_Commande | Montant_Total |
|---|---|---|---|---|
| 1001 | 1 | 2 | 2026-03-01 | 170000.00 |
| 1002 | 2 | 5 | 2026-03-01 | 75000.00 |
| 1003 | 1 | 1 | 2026-03-15 | 85000.00 |
| 1004 | 4 | 1 | 2026-03-20 | 150000.00 |
| 1005 | 2 | 3 | 2026-03-25 | 45000.00 |
Travail demandé :
-
(0,5 pt) Rédigez la requête SQL qui affiche le nom du produit et le montant total de toutes les commandes passées pour ce produit, triés par montant total décroissant.
Utilisez une jointure (
JOIN), la fonction d’agrégationSUM()etGROUP BY. -
(0,5 pt) Rédigez la requête SQL qui liste les produits en rupture de stock (c’est-à-dire dont le
Stock_Disponibleest égal à 0). Afficher :ID_Produit,Nom_Produit,Prix_Unitaire. -
(0,5 pt) Rédigez la requête SQL qui calcule le montant moyen des commandes passées au mois de mars 2026 ainsi que le nombre total de commandes pour ce mois.
-
(1,0 pt) Le directeur commercial souhaite mettre à jour le stock : chaque commande passée doit déduire la quantité commandée du stock disponible. Rédigez une instruction SQL
UPDATEpour déduire du stock du produitID_Produit = 1la somme des quantités commandées pour ce produit.Indice : Utilisez une sous-requête
SELECT SUM(Quantite_Commandee) ... WHERE ID_Produit = 1dans votreUPDATE.
— Fin de l’examen — Bon courage à toutes et à tous —
Barème récapitulatif :
Partie Thème Exercice 1 Exercice 2 Total I Tri par Sélection & Recherche Dichotomique 2,5 pts 2,5 pts 5 pts II Normalisation 1NF → 2NF → 3NF 2,5 pts 2,5 pts 5 pts III Tri à Bulles (Application & Optimisation) 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.