Une bibliothèque, un hôpital ou un site marchand gèrent des milliers de données reliées entre elles. Une base de données relationnelle les organise en tables, garantit leur cohérence et permet de les interroger avec le langage SQL. Ce chapitre s’appuie sur la base de prêt de livres d’un CDI.

Une question sur ce cours ?
ULU, le tuteur d’ULUMINE, t’aide à partir de ce cours.
Objectifs
- Identifier les relations, attributs, domaines, clés primaires et clés étrangères d’un schéma
- Expliquer les contraintes d’intégrité et le rôle d’un SGBD
- Écrire des requêtes d’interrogation avec SELECT, WHERE, JOIN, ORDER BY, DISTINCT et les fonctions d’agrégation
- Modifier une base avec INSERT, UPDATE et DELETE
1. Le modèle relationnel
Relation (table) : Ensemble de lignes (n-uplets ou enregistrements) qui ont toutes les mêmes attributs (colonnes). Chaque attribut prend ses valeurs dans un domaine (entier, texte, date…).
Clé primaire : Attribut (ou groupe d’attributs) qui identifie de façon unique chaque ligne d’une relation.
Clé étrangère : Attribut d’une relation qui fait référence à la clé primaire d’une autre relation. Elle crée le lien entre les tables.
Eleve (id_eleve, nom, prenom, classe)
Livre (id_livre, titre, auteur, annee)
Emprunt (id_emprunt, #id_eleve, #id_livre, date_emprunt)
Clés primaires : id_eleve, id_livre, id_emprunt
Clés étrangères (#) : Emprunt.id_eleve → Eleve.id_eleve, Emprunt.id_livre → Livre.id_livre2. Contraintes d’intégrité et SGBD
| Contrainte | Règle | Exemple de violation |
|---|---|---|
| D’entité | La clé primaire est unique et toujours renseignée | Insérer un second livre d’identifiant 3 |
| De référence | Une clé étrangère désigne une ligne existante | Un emprunt avec id_eleve = 12 alors qu’aucun élève n’a cet identifiant ; supprimer un élève qui a des emprunts |
| De domaine | Chaque valeur appartient au domaine de l’attribut | Une année égale à "mille" |
Un système de gestion de bases de données (SGBD) est le logiciel qui stocke la base et répond aux requêtes. Il assure la persistance des données, fait respecter les contraintes d’intégrité, gère les accès concurrents (plusieurs utilisateurs en même temps, grâce aux transactions), la sécurité (droits d’accès) et l’efficacité des recherches.
3. Interroger la base : SELECT
Livre
id_livre | titre | auteur | annee
1 | Les Misérables | Victor Hugo | 1862
2 | Germinal | Émile Zola | 1885
3 | Notre-Dame de Paris | Victor Hugo | 1831
4 | Candide | Voltaire | 1759
5 | L’Assommoir | Émile Zola | 1877
Eleve
id_eleve | nom | prenom | classe
1 | Martin | Léa | TG2
2 | Durand | Hugo | TG1
3 | Petit | Inès | TG2
Emprunt
id_emprunt | id_eleve | id_livre | date_emprunt
1 | 1 | 2 | 2026-10-05
2 | 3 | 1 | 2026-10-07
3 | 1 | 4 | 2026-10-12
4 | 2 | 2 | 2026-10-15SELECT titre, annee FROM Livre WHERE auteur = 'Victor Hugo';
-- Les Misérables 1862 ; Notre-Dame de Paris 1831
SELECT titre FROM Livre WHERE annee < 1850 ORDER BY annee;
-- Candide ; Notre-Dame de Paris
SELECT DISTINCT auteur FROM Livre;
-- Victor Hugo ; Émile Zola ; Voltaire (sans doublon)
SELECT COUNT(*) FROM Livre WHERE auteur = 'Émile Zola';
-- 2- SELECT liste les attributs voulus (* pour tous) ; FROM indique la table ; WHERE filtre les lignes (avec =, <>, <, >, AND, OR, NOT).
- ORDER BY trie le résultat (ASC croissant par défaut, DESC décroissant) ; DISTINCT supprime les doublons.
- Fonctions d’agrégation : COUNT, SUM, AVG, MIN, MAX renvoient une seule valeur calculée sur les lignes sélectionnées.
4. Jointures et modifications
Une jointure associe les lignes de deux tables dont les valeurs se correspondent, en général une clé étrangère et la clé primaire qu’elle référence.
SELECT Eleve.nom
FROM Eleve
JOIN Emprunt ON Eleve.id_eleve = Emprunt.id_eleve
JOIN Livre ON Livre.id_livre = Emprunt.id_livre
WHERE Livre.titre = 'Germinal';
-- Martin ; DurandINSERT INTO Livre VALUES (6, 'Zadig', 'Voltaire', 1747);
UPDATE Eleve SET classe = 'TG1' WHERE id_eleve = 3;
DELETE FROM Emprunt WHERE date_emprunt < '2026-10-10';À retenir
- Une relation est une table ; ses colonnes sont des attributs, chacun avec un domaine.
- Clé primaire : identifiant unique d’une ligne. Clé étrangère : référence à la clé primaire d’une autre table.
- Le SGBD garantit l’intégrité, la persistance, la sécurité et la gestion des accès concurrents.
- SELECT … FROM … WHERE … ; JOIN … ON … pour relier des tables ; ORDER BY, DISTINCT, COUNT, SUM, AVG, MIN, MAX.
- INSERT INTO, UPDATE … SET, DELETE FROM modifient la base.

Et maintenant, à toi !
Vérifie que tu as compris avec les exercices, puis révise avec la fiche.