NSI · Terminale · Programme officiel

Bases de données relationnelles et SQL en Terminale

Cours complet, points clés à retenir et exercices d'entraînement de bases de données relationnelles et sql pour les élèves de Terminale. Conforme au programme officiel.

Réviser notion par notion

Ce que tu vas réviser

  • Modèle relationnel : relation, attribut, domaine, clé primaire
  • Clés étrangères et contraintes d'intégrité
  • Requêtes SQL : SELECT, WHERE, JOIN, GROUP BY
  • Mise à jour : INSERT, UPDATE, DELETE
  • Normalisation et formes normales (1NF, 2NF, 3NF)

Relation et attribut en base de données

Une relation est un tableau qui organise les données. Chaque colonne s'appelle un attribut et représente une propriété. Chaque ligne est un enregistrement contenant les valeurs de ces propriétés.

Exemple

Une table 'Élèves' avec les colonnes Nom, Prénom, DateNaissance, Classe. Chaque élève occupe une ligne avec ses informations.

À retenir : Une relation = un tableau, un attribut = une colonne, un enregistrement = une ligne.

Domaine et type de données

Le domaine d'un attribut définit l'ensemble des valeurs possibles et autorisées. C'est le type de données : texte, nombre entier, date, booléen, etc.

Exemple

L'attribut 'Age' a pour domaine les entiers positifs entre 0 et 120. L'attribut 'Email' a pour domaine une chaîne de caractères au format email.

À retenir : Chaque attribut doit avoir un domaine bien défini qui contraint les valeurs acceptées.

Clé primaire : identifier chaque enregistrement

La clé primaire est un attribut (ou un ensemble d'attributs) qui identifie de manière unique chaque enregistrement dans une relation. Aucun doublon n'est autorisé.

Exemple

Dans une table 'Élèves', le numéro d'étudiant (NumEtudiant) est la clé primaire. Deux élèves ne peuvent jamais avoir le même numéro.

À retenir : La clé primaire garantit l'unicité : chaque enregistrement est identifiable sans ambiguïté.

Clé étrangère et intégrité référentielle

Une clé étrangère est un attribut qui référence la clé primaire d'une autre relation. Elle crée un lien entre deux tables et garantit que les données restent cohérentes.

Exemple

Une table 'Inscriptions' contient NumEtudiant (clé étrangère vers Élèves) et NumCours (clé étrangère vers Cours). On ne peut inscrire que des élèves et des cours qui existent.

À retenir : La clé étrangère maintient la cohérence entre tables : on ne peut référencer que ce qui existe.

Contraintes d'intégrité des données

Les contraintes d'intégrité sont des règles qui garantissent la qualité et la cohérence des données. Elles empêchent les erreurs et les incohérences.

Exemple

Contrainte NOT NULL : un email ne peut pas être vide. Contrainte UNIQUE : deux élèves ne peuvent pas avoir le même numéro. Contrainte CHECK : l'âge doit être positif.

À retenir : Les contraintes protègent la base de données en interdisant les données invalides ou incohérentes.

Requête SELECT : extraire des données

SELECT est la commande SQL pour récupérer des données. On spécifie les colonnes voulues et la table source, avec des conditions optionnelles.

Exemple

SELECT Nom, Prénom FROM Élèves WHERE Classe = '1A' récupère le nom et prénom des élèves de la classe 1A.

À retenir : SELECT colonne FROM table WHERE condition : c'est la structure de base pour interroger une base.

Clause WHERE : filtrer les résultats

WHERE permet de sélectionner uniquement les enregistrements qui satisfont une ou plusieurs conditions. On peut combiner les conditions avec AND, OR, NOT.

Exemple

SELECT * FROM Élèves WHERE Age > 17 AND Classe = '1A' retourne les élèves de plus de 17 ans en classe 1A.

À retenir : WHERE filtre les lignes : seuls les enregistrements vérifiant la condition sont retournés.

JOIN : combiner plusieurs tables

JOIN permet de combiner les données de deux ou plusieurs tables en utilisant une clé commune. INNER JOIN retourne les correspondances, LEFT JOIN garde tous les enregistrements de la table de gauche.

Exemple

SELECT Élèves.Nom, Cours.Titre FROM Élèves JOIN Inscriptions ON Élèves.NumEtudiant = Inscriptions.NumEtudiant JOIN Cours ON Inscriptions.NumCours = Cours.NumCours récupère les noms des élèves et les cours auxquels ils sont inscrits.

À retenir : JOIN relie les tables via leurs clés : c'est le cœur des requêtes sur bases relationnelles.

GROUP BY et agrégation de données

GROUP BY regroupe les enregistrements par valeurs communes d'un attribut. On peut ensuite appliquer des fonctions d'agrégation : COUNT, SUM, AVG, MAX, MIN.

Exemple

SELECT Classe, COUNT(*) FROM Élèves GROUP BY Classe compte le nombre d'élèves par classe.

À retenir : GROUP BY agrège les données : on résume les informations par catégorie.

INSERT : ajouter des enregistrements

INSERT ajoute une ou plusieurs nouvelles lignes dans une table. On spécifie les colonnes et les valeurs correspondantes.

Exemple

INSERT INTO Élèves (NumEtudiant, Nom, Prénom, Classe) VALUES (42, 'Dupont', 'Alice', '1A') ajoute un nouvel élève.

À retenir : INSERT ajoute des données : les valeurs doivent respecter les domaines et contraintes.

UPDATE : modifier des enregistrements

UPDATE modifie les valeurs d'attributs dans des enregistrements existants. On spécifie la table, les colonnes à modifier, et une condition pour cibler les lignes.

Exemple

UPDATE Élèves SET Classe = '2A' WHERE NumEtudiant = 42 change la classe de l'élève 42 en 2A.

À retenir : UPDATE modifie les données : toujours utiliser WHERE pour cibler les bonnes lignes.

DELETE : supprimer des enregistrements

DELETE supprime des enregistrements d'une table. On spécifie la table et une condition pour cibler les lignes à supprimer.

Exemple

DELETE FROM Élèves WHERE NumEtudiant = 42 supprime l'élève numéro 42.

À retenir : DELETE supprime les données : attention à la condition WHERE, sinon toute la table est vidée.

Première forme normale (1NF)

Une relation est en 1NF si tous les attributs contiennent des valeurs atomiques (indivisibles). Pas de listes ou de valeurs répétées dans une même cellule.

Exemple

Mauvais : une colonne 'Téléphones' contient '06123456 06789012'. Bon : une table séparée 'Téléphones' avec une ligne par numéro.

À retenir : 1NF : chaque cellule contient une seule valeur indivisible, pas de listes.

Deuxième forme normale (2NF)

Une relation est en 2NF si elle est en 1NF et si tous les attributs non-clés dépendent entièrement de la clé primaire, pas seulement d'une partie.

Exemple

Une table 'Inscriptions' avec clé (NumEtudiant, NumCours) : l'attribut 'Note' dépend de la paire complète, pas d'une seule partie.

À retenir : 2NF : tous les attributs dépendent de la clé primaire complète, pas d'une partie.

Troisième forme normale (3NF)

Une relation est en 3NF si elle est en 2NF et si aucun attribut non-clé ne dépend d'un autre attribut non-clé. Les dépendances transitives sont éliminées.

Exemple

Mauvais : table 'Élèves' avec NumEtudiant, Nom, NumClasse, NomClasse. Bon : séparer en 'Élèves' et 'Classes' car NomClasse dépend de NumClasse, pas de NumEtudiant.

À retenir : 3NF : aucune dépendance entre attributs non-clés, chaque information est à sa place.

Les points clés

  • Une base relationnelle organise les données en tables liées par des clés étrangères.
  • Les clés primaires et étrangères garantissent l'unicité et la cohérence des données.
  • SQL permet de créer, lire, modifier et supprimer des données avec SELECT, INSERT, UPDATE, DELETE.
  • Les JOIN combinent les tables pour récupérer des informations distribuées.
  • La normalisation (1NF, 2NF, 3NF) élimine les redondances et améliore la qualité de la base.
  • Les contraintes d'intégrité protègent les données contre les erreurs.

L'essentiel

Une base de données relationnelle bien conçue combine des tables normalisées, des clés qui les relient, et des requêtes SQL pour extraire et modifier les données de manière cohérente.

Exercices d'entraînement

Entraîne-toi sur ces exercices, puis fais-toi corriger pas à pas par le tuteur.

Exercice 1

Une bibliothèque gère une base de données avec deux tables : - Table LIVRES : id_livre (clé primaire), titre, auteur, id_categorie - Table CATEGORIES : id_categorie (clé primaire), nom_categorie Écrivez une requête SQL pour afficher le titre de tous les livres et leur catégorie correspondante.

Corrige cet exercice avec le tuteur →

Exercice 2

Une entreprise possède une table EMPLOYES avec les colonnes : id_employe, nom, prenom, salaire, id_departement. 1. Écrivez une requête pour augmenter le salaire de 5% de tous les employés du département 3. 2. Écrivez une requête pour compter le nombre d'employés par département et afficher les résultats triés par nombre d'employés décroissant. 3. Expliquez pourquoi cette structure pourrait violer la 3NF si on ajoutait une colonne 'nom_departement' directement dans EMPLOYES.

Corrige cet exercice avec le tuteur →

Autres chapitres de NSI en Terminale

Besoin d’aide sur ce chapitre ?

Crée ton compte et révise avec un tuteur IA qui s’adapte à ton niveau, corrige tes exercices et t’explique pas à pas.

Sans carte bancaire. Résiliable en 1 clic.