⌨ Spécialité NSI · Numérique et sciences informatiques Terminale Générale · Chapitre 5

Bases de données relationnelles et SQL

Modèle relationnel (relation, attribut, domaine, clé primaire, clé étrangère, schéma), contraintes d'intégrité, systèmes de gestion de bases de données, langage SQL : SELECT, WHERE, ORDER BY, fonctions d'agrégation, jointures, INSERT, UPDATE, DELETE.

1. Le modèle relationnel

Définition

Une base de données relationnelle est un ensemble de relations (tables). Chaque relation a des attributs (colonnes) prenant leurs valeurs dans un domaine (entier, texte, date). La clé primaire identifie chaque ligne de façon unique ; une clé étrangère fait référence à la clé primaire d'une autre table. Le schéma décrit les tables, leurs attributs et leurs clés.

Auteur# id (clé primaire)nomnaissanceLivre# id (clé primaire)titreanneeid_auteur (clé étrangère)Livre.id_auteur fait référence à Auteur.id
Schéma relationnel de deux tables liées par une clé étrangère.

Propriété · Contraintes d'intégrité

Contrainte de domaine (bon type), d'entité (clé primaire unique et non vide), de référence (une clé étrangère doit correspondre à une ligne existante). Le SGBD (SQLite, MySQL, PostgreSQL) les fait respecter et gère l'accès simultané de nombreux utilisateurs, la sécurité et la persistance des données.

2. Interroger avec SQL

Exemple · Requêtes de sélection

SELECT titre, annee FROM Livre WHERE annee >= 2000 ORDER BY annee DESC;
SELECT COUNT(*) FROM Livre;
SELECT AVG(annee) FROM Livre WHERE id_auteur = 3;
SELECT DISTINCT annee FROM Livre;

Propriété · Jointure

Pour combiner deux tables, on les joint sur la clé étrangère :

SELECT Livre.titre, Auteur.nom
FROM Livre JOIN Auteur ON Livre.id_auteur = Auteur.id
WHERE Auteur.nom = 'Hugo';

3. Modifier les données

Exemple · Insertion, mise à jour, suppression

INSERT INTO Auteur (id, nom, naissance) VALUES (7, 'Sand', 1804);
UPDATE Livre SET annee = 1862 WHERE id = 12;
DELETE FROM Livre WHERE annee < 1800;

Attention · Prudence

Un UPDATE ou un DELETE sans WHERE s'applique à toutes les lignes. Supprimer un auteur encore référencé par des livres viole la contrainte de référence.

Activité · Interroger une base SQLite

MatérielDB Browser for SQLite ou module Python sqlite3, base bibliotheque.db.
ConsigneAfficher, pour chaque auteur, le nombre de livres de la base, du plus prolifique au moins prolifique.
Résultat
SELECT Auteur.nom, COUNT(*) AS nb
FROM Livre JOIN Auteur ON Livre.id_auteur = Auteur.id
GROUP BY Auteur.nom ORDER BY nb DESC;
BilanSQL est un langage déclaratif : on décrit le résultat voulu, le SGBD choisit comment l'obtenir.

S'entraîner

Exercices corrigés

🎓 20 exercices corrigés et un quiz vous attendent dans ce chapitre.

Créez votre compte gratuit pour voir les corrections, faire les quiz et suivre votre progression.

1

Vocabulaire

★☆☆

Dans la table Livre, citer les attributs, la clé primaire et la clé étrangère.

🔒 Correction réservée aux membres Créer un compte gratuit →
2

Clé primaire

★☆☆

Pourquoi le nom d'un auteur n'est-il pas une bonne clé primaire ?

🔒 Correction réservée aux membres Créer un compte gratuit →
3

Domaine

★☆☆

Donner un domaine adapté pour annee et pour titre.

🔒 Correction réservée aux membres Créer un compte gratuit →
4

Sélection simple

★☆☆

Écrire la requête qui affiche tous les titres.

🔒 Correction réservée aux membres Créer un compte gratuit →
8

Valeurs distinctes

★★☆

Afficher les années de parution sans doublon.

🔒 Correction réservée aux membres Créer un compte gratuit →
10

Jointure avec condition

★★☆

Afficher les titres des livres d'auteurs nés après $1900$.

🔒 Correction réservée aux membres Créer un compte gratuit →
11

Agrégation

★★☆

Quelle est l'année du livre le plus ancien ?

🔒 Correction réservée aux membres Créer un compte gratuit →
12

Insertion

★☆☆

Ajouter le livre d'identifiant $20$, « Les Misérables », $1862$, auteur $3$.

🔒 Correction réservée aux membres Créer un compte gratuit →
13

Mise à jour

★★☆

Corriger l'année du livre $20$ en $1862$ s'il était noté $1826$.

🔒 Correction réservée aux membres Créer un compte gratuit →
15

Intégrité de référence

★★★

Pourquoi le SGBD refuse-t-il INSERT INTO Livre VALUES (21, 'X', 2020, 99) si aucun auteur n'a l'identifiant $99$ ?

🔒 Correction réservée aux membres Créer un compte gratuit →
16

Doublon de clé

★★☆

Que se passe-t-il si on insère un livre avec un id déjà utilisé ?

🔒 Correction réservée aux membres Créer un compte gratuit →
18

Redondance

★★☆

Pourquoi ne pas stocker le nom de l'auteur directement dans chaque ligne de Livre ?

🔒 Correction réservée aux membres Créer un compte gratuit →
20

Vrai ou faux

★★☆

a) Une clé primaire peut être vide. b) SQL est un langage déclaratif. c) ORDER BY trie les résultats.

🔒 Correction réservée aux membres Créer un compte gratuit →

Vérifier

Avez-vous bien compris ?

Répondez au quiz : la correction s'affiche immédiatement.