Ce cours de spécialité approfondit la conception, la programmation et l’exploitation des systèmes de gestion de bases de données (SGBD) relationnels et non relationnels. Au-delà du SQL de base vu en licence, il prépare l’ingénieur logiciel à concevoir des schémas robustes, à programmer la logique métier côté serveur, à garantir la cohérence des données sous forte concurrence (paiements mobile money, inscriptions en ligne, guichets bancaires) et à optimiser des bases de plusieurs millions de lignes. Les exemples s’appuient sur des systèmes réalistes au Niger : gestion scolaire d’un établissement de Niamey, plateforme de paiement mobile, e-gouvernement. Les travaux pratiques utilisent PostgreSQL (logiciel libre), les notions étant transposables à Oracle, SQL Server ou MySQL.
Objectifs d’apprentissage
- Analyser un schéma relationnel à l’aide des dépendances fonctionnelles et le normaliser jusqu’à la FNBC en justifiant les compromis.
- Écrire des requêtes SQL avancées : jointures externes, sous-requêtes corrélées, CTE récursives, fonctions de fenêtrage.
- Programmer la logique côté serveur : fonctions et procédures stockées PL/pgSQL, déclencheurs, vues et gestion des droits.
- Expliquer et maîtriser les transactions (ACID), les niveaux d’isolation, le verrouillage, le MVCC et la reprise après panne.
- Estimer le coût d’une requête, choisir des index pertinents et interpréter un plan d’exécution (EXPLAIN).
- Situer les bases réparties et NoSQL (théorème CAP, réplication, partitionnement) et choisir une technologie adaptée à un besoin.
Prérequis
Modèle entité-association et modèle relationnel (Merise ou UML), algèbre relationnelle, SQL de base (SELECT, jointures, GROUP BY), notions de programmation procédurale et de systèmes d’exploitation.
Plan du cours
- Leçon 1 — Conception relationnelle avancée : dépendances fonctionnelles, normalisation et SQL analytique
- Leçon 2 — Programmation côté serveur : PL/pgSQL, procédures stockées, déclencheurs et sécurité d’accès
- Leçon 3 — Transactions, contrôle de concurrence et reprise après panne
- Leçon 4 — Indexation, optimisation des requêtes, bases réparties et NoSQL
Modalités d’évaluation
Volume horaire : 20 h de cours magistral, 20 h de travaux dirigés, 20 h de travaux pratiques (60 h en présentiel) et 60 h de travail personnel de l’étudiant (TPE), soit 120 h pour 6 crédits. Évaluation : contrôle continu (TD notés, comptes rendus de TP guidés, mini-projet de base de données pour une application de gestion scolaire) et examen terminal écrit (conception, SQL, transactions, optimisation).
Bibliographie
- Ramez Elmasri, Shamkant B. Navathe, Fundamentals of Database Systems, Pearson.
- Abraham Silberschatz, Henry F. Korth, S. Sudarshan, Database System Concepts, McGraw-Hill.
- Georges Gardarin, Bases de données, Eyrolles.
- Martin Kleppmann, Designing Data-Intensive Applications, O’Reilly Media.
- Documentation officielle PostgreSQL (postgresql.org/docs) et norme ISO/IEC 9075 (SQL).
