Exercice 3 - Partie B · Bac Numérique et Sciences Informatiques Métropole 2026 (sujet 1)
Thème : Bases de données relationnelles, SGBD et langage SQL · Tiré du sujet Métropole France 1 (2026)
Énoncé
Exercice 3 (8 points)
Cet exercice porte sur les arbres, l'algorithmique des arbres, et les bases de données.
On s'intéresse au fonctionnement interne d'une plateforme en ligne dédiée spécifiquement aux débats. Plutôt que de lister des messages des utilisateurs dans l'ordre chronologique, les différentes contributions sont structurées de façon arborescente afin de mieux comprendre les liens entre les arguments. Chaque contribution vient se rattacher à une affirmation, soit afin d'appuyer cette affirmation avec un argument pour, soit afin de l'attaquer avec un argument contre.
Cet exercice contient deux parties indépendantes l'une de l'autre.
Partie A: structure arborescente des arguments
Dans cette partie on modélise un arbre de débat pour un sujet de débat. La figure 1 montre un exemple d'arbre de débat.
Dans un arbre de débat, chaque nœud est une affirmation, et il y en a de trois sortes:
le sujet du débat (dans le parallélogramme) est une affirmation, c'est le point de départ du débat;
un argument pour (dans un rectangle aux coins arrondis) peut venir soutenir une affirmation, cet argument est lui-même une affirmation;
un argument contre (dans un hexagone) peut venir attaquer une affirmation, cet argument est lui-même une affirmation.
Partie B: base de données des utilisateurs et de leurs contributions
Dans cette partie, on pourra utiliser les clauses du langage SQL pour:
construire des requêtes d'interrogation à l'aide de SELECT, FROM, WHERE (avec les opérateurs logiques AND, OR) et JOIN... ON;
construire des requêtes d'insertion et de mise à jour à l'aide de UPDATE, INSERT et DELETE.
Pour manipuler toutes les informations sur plusieurs sujets de débats, la plateforme dispose d'un Système de Gestion de Bases de Données (SGBD).
8.
Parmi les propositions suivantes, indiquer celles qui font partie des rôles d'un SGBD:
a) sécuriser les accès à la base de données;
b) assurer l'alimentation électrique des serveurs;
c) assurer la persistance des données même en cas de panne matérielle;
d) gérer les accès en parallèle de plusieurs utilisateurs;
e) assurer des connexions en HTTPS au serveur.
Pour gérer les données, le schéma relationnel utilisé est représenté sur la figure 2.
La clé primaire de chaque table correspond à l'ensemble de ses attributs soulignés. Chaque attribut précédé d'un « # » est une clé étrangère.
L'attribut sorte de la table affirmation peut valoir 'sujet' quand c'est l'affirmation initiale d'un sujet de débat, ou bien 'pour' ou 'contre' quand c'est une réponse à une autre affirmation (référencée par l'attribut aff_repondue).
L'attribut contenu correspond à la phrase elle-même de l'affirmation.
L'attribut sorte de la table reaction peut valoir 'like' ou 'dislike', et s'applique à l'affirmation référencée par l'attribut aff_reagie.
Voici des exemples d'extraits des tables affirmation et reaction. On a omis, pour ces exemples, les attributs auteur et contenu de la table affirmation:
affirmation
id_aff
sorte
aff_repondue
nb_likes
nb_dislikes
0
'sujet'
NULL
42
17
1
'pour'
0
20
20
2
'pour'
0
40
10
3
'contre'
0
13
12
4
'contre'
0
18
6
7
'contre'
1
15
16
reaction
aff_reagie
utilisateur
sorte
0
'alice'
'like'
1
'alice'
'dislike'
0
'bob'
'dislike'
1
'bob'
'dislike'
9.
Indiquer en justifiant quel autre attribut de la table utilisateur aurait aussi pu servir de clé primaire.
On rappelle que la fonction d'agrégation COUNT permet de compter les éléments du résultat d'une requête en plaçant COUNT(*) dans la clause SELECT.
10.
Écrire une requête SQL permettant d'obtenir le nombre d'affirmations qui ont 50 likes ou plus.
11.
Écrire une requête qui permet d'obtenir les contenus des sujets et leur nombre de likes, créés par les utilisateurs dont les prénom et nom sont respectivement 'Pierre' et 'Durand'.
Le mot-clé AS permet de donner un autre nom à une table au sein d'une requête. Il est notamment nécessaire lorsqu'on a besoin de faire la jointure d'une table avec elle-même. On considère la requête SQL suivante:
SELECT aff.contenu, rep.contenu
FROM affirmation AS aff JOIN affirmation AS rep
ON rep.aff_repondue = aff.id_aff
WHERE rep.nb_likes >= 2 * aff.nb_likes
AND rep.sorte = 'contre'
12.
Donner une interprétation en français de ce que permet d'obtenir la requête ci-dessus.
L'utilisateur au pseudo 'i<3descartes' approuve par un like l'affirmation 'Cogito ergo sum' qui a l' id_aff 108.
13.
Recopier et compléter les deux requêtes SQL suivantes, permettant de mettre à jour les informations de la base de données suite à cette action.
... reaction
VALUES (...,...,...);
... affirmation
SET nb_likes =...
WHERE... =...;
L'utilisateur au pseudo 'i<3rgpd' souhaite faire valoir son droit à l'effacement, et supprimer son compte utilisateur et toutes les données qui y sont liées. Dans cette situation, la plateforme de débat, qui souhaite maintenir la qualité des échanges, suit la procédure suivante:
elle anonymise toutes les affirmations de l'utilisateur (en remplaçant l'attribut auteur par la valeur NULL), considérant que les affirmations elle-mêmes ne sont pas des données personnelles;
elle supprime toutes les réactions de l'utilisateur (mais sans toucher au nombres de likes et de dislikes des affirmations correspondantes);
et enfin elle supprime l'utilisateur lui-même.
14.
Expliquer pourquoi il est nécessaire de supprimer les réactions de l'utilisateur avant de supprimer l'utilisateur.
15.
Écrire les trois requêtes qui permettent la suppression des données du compte de 'i<3rgpd' en suivant la procédure décrite ci-dessus.

Corrigé
Corrigé proposé par AprenAI (non officiel)
8. Parmi les propositions suivantes, indiquer celles qui font partie des rôles d'un SGBD :
Réponse : a) sécuriser les accès à la base de données ; / c) assurer la persistance des données même en cas de panne matérielle ; / d) gérer les accès en parallèle de plusieurs utilisateurs ;
9. Indiquer en justifiant quel autre attribut de la table utilisateur aurait aussi pu servir de clé primaire.
Réponse : L'attribut email.
10. Écrire une requête SQL permettant d'obtenir le nombre d'affirmations qui ont 50 likes ou plus.
Réponse : SELECT COUNT(*) FROM affirmation WHERE nb_likes >= 50;
11. Écrire une requête qui permet d'obtenir les contenus des sujets et leur nombre de likes, créés par les utilisateurs dont les prénom et nom sont respectivement 'Pierre' et 'Durand'.
Réponse : SELECT affirmation.contenu, affirmation.nb_likes FROM affirmation JOIN utilisateur ON affirmation.auteur = utilisateur.pseudo WHERE utilisateur.prenom = 'Pierre' AND utilisateur.nom = 'Durand' AND affirmation.sorte = 'sujet';
12. Donner une interprétation en français de ce que permet d'obtenir la requête ci-dessus.
Réponse : Cette requête permet d'obtenir le contenu d'une affirmation et le contenu de chacune des réponses de type 'contre' qui lui ont été faites, pour lesquelles la réponse 'contre' a obtenu au moins deux fois plus de likes que l'affirmation d'origine.
Les réponses des 4 questions restantes et l’explication pas à pas sont réservées aux membres Premium. Premium
Résous-le ici : correction automatique, indices et corrigé détaillé.
Exercice 3 - Bases de données relationnelles et S… · Métropole 2026 (sujet 2) ›
Plus d’exercices de Bases de données relationnelles, SGBD et langage SQL
- Exercice 3 - Bases de données relationnelles et S… · Métropole 2026 (sujet 2)
- Exercice 1 · Métropole 2025 (sujet 1)
- Exercice 3 - Bases de données relationnelles et S… · Métropole 1 remplacement 2025
- Exercice 2 - Bases de données relationnelles et S… · Métropole 2025 (sujet 2)
- Exercice 3 - Bases de données · Métropole 2 remplacement 2025
- Exercice 2 - Bases de données relationnelles et S… · Métropole 2024 (sujet 1)
- Exercice 1 · Métropole 1 remplacement 2024
- Exercice 1 - Partie A · Métropole 2024 (sujet 2)
- Exercice 3 - Partie C : Exploitation de la base d… · Métropole 2 remplacement 2024
- Exercice 1 · Métropole 2023 (sujet 1)