Aller au contenu

Numérique et sciences informatiques (spécialité) · TerminaleBac

Modèle relationnel : exercices corrigés de Terminale NSI

Publié le 7 novembre 2026 · Mis à jour le 7 novembre 2026 · Signaler une erreur

L'essentiel

  • Une base de données relationnelle range l'information dans des tableaux à deux dimensions : les lignes sont des n-uplets (ou enregistrements), les colonnes des attributs.6
  • La clé primaire identifie chaque ligne sans ambiguïté ; la clé étrangère pointe vers la clé primaire d'une autre table et relie les tables entre elles.6
  • Le schéma (tables, clés, références) vise à limiter la redondance et à garder des données cohérentes.6
  • Dans un schéma, la clé primaire se souligne et la clé étrangère se repère au symbole # placé devant son nom.2
  • Pour chaque exercice : repère d'abord les tables, puis les clés, puis seulement réponds à la question.

Comment utiliser ces exercices

Ces exercices portent sur le modèle relationnel, le socle de la partie « bases de données » du programme de Terminale. Ils précèdent l'étude du langage SQL : ici, pas de requête à écrire, mais un travail sur la façon dont les données sont organisées avant d'être interrogées. Les exercices de bases de données relationnelles font partie des épreuves écrites de spécialité NSI, où la calculatrice n'est pas autorisée.3

Tous les exemples de cette page sont inventés pour l'occasion. Cherche d'abord seul·e sur papier, ouvre un indice seulement si tu bloques, puis compare avec la correction étape par étape.

Pourquoi ce modèle ? Les idées à relier

Avant 1970, les données étaient souvent organisées selon la machine qui les stockait. Entre 1965 et 1975, le besoin s'est fait sentir de séparer plus nettement la représentation logique des données de leur organisation physique.6 Le modèle relationnel répond à ce besoin : l'utilisateur peut accéder aux informations sans savoir où elles sont stockées ni comment.5

Ce modèle est aujourd'hui l'un des plus utilisés, et le langage SQL est le langage associé aux systèmes de gestion de bases de données qui l'appliquent.5 Il sera l'objet des chapitres suivants.

Les exercices

Exercice 1 Lire une table

★☆☆Environ 5 min

Voici la relation eleve d'un lycée fictif :

id nom classe
1 Lina T1
2 Hugo T2
3 Inès T1
4 Sami T3
  1. Donne le nom de chaque attribut de cette relation.
  2. Combien y a-t-il de n-uplets ?
  3. Écris le n-uplet qui correspond à Hugo.
  4. Combien de valeurs la table contient-elle au total ?
Indice 1

Les attributs sont les noms des colonnes, les n-uplets sont les lignes (sans la ligne d'en-tête).

Indice 2

Pour le total, multiplie le nombre de lignes de données par le nombre de colonnes.

Voir la correction pas à pas
  1. Les colonnes sont id, nom et classe : ce sont les trois attributs.

  2. Il y a quatre lignes de données : la relation contient quatre n-uplets. La ligne d'en-tête ne compte pas, elle donne les noms des attributs.

  3. Le n-uplet de Hugo est (2, Hugo, T2) : une valeur par attribut, dans l'ordre des colonnes.

  4. Chaque n-uplet porte 3 valeurs et il y en a 4 : 4 × 3 = 12 valeurs au total.

Une relation est un tableau : les lignes sont des n-uplets, les colonnes des attributs. Compter proprement les deux évite bien des erreurs dans les exercices suivants.

Exercice 2 Choisir une clé primaire

★☆☆Environ 8 min

Une médiathèque fictive stocke la relation livre :

code titre auteur annee
L01 Océans Roux 2019
L02 Horizons Roux 2019
L03 Océans Giraud 2021
L04 Brumes Giraud 2021
  1. Les attributs titre, auteur et annee peuvent-ils servir de clé primaire ? Justifie.
  2. Que penses-tu de code ?
  3. Écris le schéma de la relation en soulignant la clé primaire (utilise le soulignement Markdown ou entoure-la de _).
Indice 1

Cherche, pour chaque attribut, une valeur qui apparaît plusieurs fois.

Indice 2

Une clé primaire doit identifier chaque ligne, y compris les futures lignes.

Voir la correction pas à pas
  1. titre ne convient pas : « Océans » apparaît sur deux lignes différentes. Il ne permet pas d'identifier une ligne de façon unique.

  2. auteur ne convient pas non plus : Roux et Giraud apparaissent chacun deux fois. annee non plus : 2019 et 2021 sont répétées.

  3. code prend une valeur différente par ligne, et c'est un identifiant créé exactement pour cela, comme un numéro de série qui est unique pour chaque objet.2 Il convient donc.

  4. Schéma : livre(code, titre, auteur, annee).

On choisit comme clé primaire un attribut qui identifie chaque ligne sans ambiguïté. Un identifiant dédié (code, numéro) est le choix le plus sûr, car il reste unique même quand la table grossit.

Exercice 3 Suivre une clé étrangère

★★☆Environ 10 min

Une boutique fictive de matériel de musique utilise deux relations.

marque(_id_, nom)

id nom
1 Aurora
2 Belcanto
3 Cordal

modele(_id_, nom, annee, #id_marque)

id nom annee id_marque
10 Lune 2015 1
11 Soleil 2018 2
12 Comète 2020 2
13 Étoile 2021 3
  1. Quelle est la clé étrangère de modele ? Vers quelle relation et quel attribut pointe-t-elle ?
  2. Quelle est la marque du modèle « Comète » ?
  3. Combien de modèles de la marque Belcanto la table contient-elle ?
Indice 1

Le symbole # devant un attribut signale une clé étrangère.

Indice 2

Pour la question 3, commence par trouver l'identifiant de Belcanto dans marque, puis compte les lignes de modele qui portent cet identifiant.

Voir la correction pas à pas
  1. Dans modele, l'attribut #id_marque est précédé de # : c'est la clé étrangère.2 Elle renvoie à la clé primaire id de la relation marque.

  2. Le modèle « Comète » a pour id_marque la valeur 2. On cherche 2 dans la colonne id de marque : c'est Belcanto.

  3. Belcanto a pour identifiant 2. Les valeurs de id_marque dans modele sont 1, 2, 2, 3 : la valeur 2 apparaît deux fois (Soleil et Comète).

  4. Il y a donc 2 modèles de la marque Belcanto.

La clé étrangère évite de recopier le nom de la marque sur chaque modèle : on stocke seulement un numéro, qui renvoie à la ligne correspondante de l'autre table. C'est ainsi que les tables sont reliées.6

Exercice 4 Repérer une redondance

★★☆Environ 12 min

Une association fictive garde toutes ses commandes dans une seule relation :

commande(_num_, client, adresse_client, produit)

num client adresse_client produit
1 Ana 4 rue des Lilas Bougie
2 Ana 4 rue des Lilas Savon
3 Bilal 12 allée du Parc Thé
4 Bilal 12 allée du Parc Miel
5 Bilal 12 allée du Parc Savon
6 Chloé 7 place Verte Thé
  1. Quelle information est répétée inutilement ?
  2. Quel risque cela fait-il courir quand Ana déménage ?
  3. Propose une décomposition en deux relations reliées par une clé étrangère.
  4. Combien de fois une adresse est-elle stockée avant, puis après ta décomposition ? Donne le nombre d'adresses économisées.
Indice 1

Regarde les colonnes client et adresse_client : que se passe-t-il à chaque nouvelle commande d'un même client ?

Indice 2

Crée une relation client avec un identifiant, puis remplace les informations du client dans commande par une clé étrangère.

Voir la correction pas à pas
  1. L'adresse d'un client est recopiée à chaque commande : 2 fois pour Ana, 3 fois pour Bilal, 1 fois pour Chloé.

  2. Si Ana déménage, il faut modifier deux lignes. Si on en oublie une, la base contient deux adresses différentes pour la même personne : les données deviennent incohérentes. Réduire la redondance sert justement à préserver la cohérence.6

  3. Décomposition : client(id, nom, adresse) et commande(num, #id_client, produit). Chaque client n'est décrit qu'une fois, et chaque commande renvoie à lui par #id_client.

  4. Avant, l'adresse était stockée une fois par commande : 6 fois. Après, une fois par client : 3 fois. On économise 6 − 3 = 3 adresses.

Quand une même information se répète sur plusieurs lignes, c'est le signe qu'elle appartient à un autre sujet et mérite sa propre table. Le schéma d'une base relationnelle est pensé pour limiter ce genre de répétition.6

Exercice 5 Accepter ou refuser une insertion

★★★Environ 12 min

Deux relations fictives décrivent des auteurs et leurs livres :

auteur(_id_, nom)

id nom
1 Roux
2 Giraud

livre(_id_, titre, #id_auteur)

id titre id_auteur
1 Océans 1
2 Brumes 2
3 Rivages 1

On tente quatre insertions, indépendantes les unes des autres :

  • (a) dans livre : (5, Dunes, 2)
  • (b) dans livre : (6, Forêts, 9)
  • (c) dans livre : (3, Marais, 1)
  • (d) dans auteur : (2, Martin)

Pour chacune, dis si elle respecte les clés. Combien d'insertions sont acceptables ?

Indice 1

Pour une clé primaire, la valeur proposée existe-t-elle déjà dans la table ?

Indice 2

Pour une clé étrangère, la valeur proposée existe-t-elle déjà comme clé primaire de la table visée ?

Voir la correction pas à pas
  1. (a) L'identifiant 5 n'existe pas dans livre, et l'auteur 2 existe dans auteur. Les deux clés sont respectées : l'insertion est acceptable.

  2. (b) L'identifiant 6 est libre, mais id_auteur vaut 9 et aucun auteur n'a cet identifiant : la clé étrangère renverrait à rien. Insertion refusée.

  3. (c) L'identifiant 3 existe déjà dans livre (Rivages) : deux lignes auraient la même clé primaire, ce qui empêcherait de les distinguer. Insertion refusée.

  4. (d) L'identifiant 2 est déjà celui de Giraud dans auteur : même problème qu'en (c). Insertion refusée.

  5. Une seule insertion est acceptable : la (a).

Deux règles à vérifier systématiquement : une clé primaire ne se répète jamais, et une clé étrangère doit désigner une ligne qui existe dans la table visée.

Exercice 6 Concevoir un schéma

★★★Environ 20 min

Un club de sport fictif veut gérer :

  • ses adhérents (nom, prénom) ;
  • ses activités (nom, jour de la semaine) ;
  • les inscriptions des adhérents aux activités, avec la date d'inscription.

Un adhérent peut suivre plusieurs activités, et une activité accueille plusieurs adhérents.

  1. Propose un schéma relationnel avec trois relations. Souligne les clés primaires et marque les clés étrangères avec #.
  2. Pourquoi ne faut-il pas ranger la liste des activités dans une seule cellule de la table des adhérents ?
  3. Écris deux lignes d'exemple pour chaque relation, de façon que les clés étrangères soient cohérentes.
Indice 1

Une troisième table peut servir uniquement à relier les deux autres : chaque ligne représente une inscription.

Indice 2

Dans la relation d'inscription, il faudra deux clés étrangères.

Voir la correction pas à pas
  1. Schéma : adherent(id, nom, prenom) ; activite(id, nom, jour) ; inscription(id, #id_adherent, #id_activite, date_inscription).

  2. La relation inscription porte les liens : chaque ligne associe un adhérent et une activité. Ses deux clés étrangères renvoient aux clés primaires de adherent et de activite, comme les liens entre tables se font par clé primaire et clé étrangère.6

  3. Ranger plusieurs activités dans une seule cellule casserait le principe d'un tableau où chaque case contient une seule valeur : on ne pourrait plus retrouver proprement les adhérents d'une activité. Avec une ligne par inscription, chaque information est à sa place.

  4. Exemple : adherent (1, Lopez, Marie) et (2, Petit, Karim) ; activite (1, Natation, mardi) et (2, Escalade, jeudi) ; inscription (1, 1, 1, 2026-09-10) et (2, 2, 1, 2026-09-12). Toutes les valeurs de id_adherent et id_activite existent bien dans les tables visées.

Concevoir un schéma, c'est découper l'information par sujet, donner à chaque table une clé primaire, puis relier les tables par des clés étrangères. L'objectif est de limiter la redondance et de garder des données cohérentes.6

Les questions qu'on se pose

Pourquoi ne pas tout mettre dans une seule grande table ?

Parce que la même information serait recopiée sur de nombreuses lignes. Cette redondance coûte de la place et, surtout, menace la cohérence : en corrigeant une copie et pas les autres, on obtient des données contradictoires. Le schéma d'une base relationnelle est justement conçu pour réduire la redondance et maximiser la cohérence.6 On découpe donc par sujet et on relie les tables par des clés.

Une clé primaire peut-elle être un nom ou une date ?

Techniquement, tout attribut dont les valeurs ne se répètent pas pourrait jouer ce rôle, mais c'est risqué : deux personnes peuvent porter le même nom, deux événements avoir la même date. On préfère un identifiant dédié, comme un numéro de série, qui est unique pour chaque objet décrit.2 Dans un schéma, la clé primaire se souligne.2

Que dois-je savoir sur le modèle relationnel pour l'épreuve écrite de NSI ?

Les sujets comportent régulièrement un exercice consacré aux bases de données relationnelles et au langage SQL, dans une épreuve de 3 h 30 sans calculatrice.3 Il faut donc savoir lire un schéma, repérer clés primaires et clés étrangères, et comprendre comment les tables se relient avant d'écrire des requêtes. Ces exercices sont la préparation directe aux chapitres sur SQL.

Sources

Programme visé : Programmes et ressources en Numérique et Sciences Informatiques - voie générale - Terminale · Éduscol / Ministère de l'Éducation nationale

  1. Programmes et ressources en Numérique et Sciences Informatiques - voie générale - Terminale, Éduscol / Ministère de l'Éducation nationale. Consulté le 7 novembre 2026.
  2. Baccalauréat général 2025 : NSI, Ministère de l'Éducation nationale. Consulté le 7 novembre 2026.
  3. Spécialité NSI - Ressources Éduscol STI, Éduscol. Consulté le 7 novembre 2026.
  4. DIU EIL - Diplôme Inter-Universitaire Enseigner l'Informatique au Lycée, Université Grenoble-Alpes. Consulté le 7 novembre 2026.
  5. Modèle relationnel, Wikipédia. Consulté le 7 novembre 2026.
  6. Base de données relationnelle, Wikipédia. Consulté le 7 novembre 2026.

Les numéros dans le texte renvoient à ces sources. Une source qui ne dit pas ce qu'on lui fait dire ? Signale-le.

Signaler une erreur sur cette page

Je suis en…

Primaire

  • CP Bientôt
  • CE1 Bientôt
  • CE2 Bientôt
  • CM1 Bientôt
  • CM2 Bientôt

Collège

Lycée

Supérieur

  • BTS Bientôt
  • BUT Bientôt
  • Licence Bientôt
  • Prépas Bientôt

Sur cette page