Exercice 1 · Bac Numérique et Sciences Informatiques Antilles-Guyane 2026 (jour 1)
Thème : Bases de données relationnelles, SGBD et langage SQL · Tiré du sujet Jour 1 (2026)
Énoncé
Exercice 1 (6 points)
Cet exercice porte sur le modèle relationnel, les systèmes de gestion de bases de données relationnelles et le langage SQL.
Le restaurant Pizzayolo cherche à moderniser son système de réservation de pizzas et fait appel à un prestataire informatique qui lui propose d'utiliser un système de gestion de bases de données relationnelles.
1.
Donner deux avantages que peut apporter un système de gestion de bases de données par rapport à l'utilisation d'un simple tableur dans lequel on ajouterait chaque nouvelle commande sur une ligne.
Le prestataire propose une base de données constituée de trois relations selon le schéma relationnel suivant, les clés primaires des tables étant soulignées.
client( id: entier, nom: texte, prenom: texte)
pizza( num: entier, couleur: texte, prix: flottant)
commande( code: entier, id_client: entier, num_pizza: entier, date: texte, livraison: entier, paiement: entier)
Voici un extrait des tables client, pizza et commande:
client
id · nom · prenom
103 · Esposito · Giulia
106 · Panzini · Raffaele
pizza
num · couleur · prix
1 · Rossa · 11.5
2 · Bianca · 11.5
3 · Nera · 12.5
4 · Bianca · 15.5
commande
code · id_client · num_pizza · date · livraison · paiement
42362 · 103 · 2 · 2025-01-02 · 1 · 1
42363 · 103 · 3 · 2025-01-02 · 1 · 1
42364 · 106 · 1 · 2025-01-03 · 1 · 0
42365 · 103 · 1 · 2025-01-03 · 0 · 1
Chaque pizza commandée par un client donne lieu à une commande différente. Ainsi, un même client peut, par exemple, commander plusieurs pizzas le même jour: ceci se traduit dans la table par plusieurs commandes de codes différents. La pizza d'une commande peut avoir été livrée ou non: l'attribut livraison vaut 1 si la pizza a été livrée et 0 sinon. Le client peut avoir payé sa commande ou non: l'attribut paiement vaut 1 si la commande a été réglée et 0 sinon.
2.
Indiquer, en justifiant, s'il est possible d'avoir deux pizzas avec le même numéro de pizza, le même prix et avec une couleur de pizza différente.
3.
Donner un exemple de clé étrangère en précisant la relation à laquelle elle appartient ainsi que l'attribut et la relation qu'elle référence.
Rappels SQL pour cet exercice
On pourra utiliser: SELECT, FROM, WHERE (avec AND, OR), JOIN... ON, UPDATE, INSERT, DELETE, DISTINCT, ORDER BY.
Fonctions d'agrégation: COUNT, AVG, MAX, MIN, SUM.
Exemple: SELECT MAX(prix) FROM pizza; renvoie le prix de la pizza la plus chère.
4.
Écrire le résultat renvoyé par la requête SQL suivante, en s'appuyant uniquement sur les extraits des tables fournis précédemment:
SELECT prix FROM pizza WHERE couleur = 'Bianca';
5.
Écrire une requête SQL qui donne les couleurs des pizzas dont le prix est strictement supérieur à 15 €.
6.
Écrire une requête SQL qui donne les prénoms des clients qui n'ont pas payé une pizza qui leur a pourtant été livrée.
7.
Écrire une requête SQL qui donne le prix moyen de vente des pizzas commandées par un client de nom « Esposito ».
8.
La commande de code 42365 vient tout juste d'être livrée. Écrire une requête SQL qui permet de mettre à jour la base de données en conséquence.
9.
Le 3 janvier 2025, Emanuele Girasole, qui n'a jamais encore commandé dans ce restaurant, souhaite se faire livrer la pizza numéro 2. Écrire, dans le bon ordre, les requêtes SQL qui permettent de mettre à jour la base de données en conséquence. On suppose que l'identifiant client 107 et que le code de commande 42366 n'ont pas encore été attribués dans la base de données.
10.
La gérante de la pizzéria décide de retirer de la vente la pizza d'identifiant 1 et exécute la requête suivante:
DELETE FROM pizza
WHERE num = 1;
Indiquer le problème que peut poser l'exécution de cette requête.
11.
La gérante aimerait que l'on ajoute dans la base de données un moyen de retrouver les ingrédients utilisés pour chaque pizza. Chaque pizza comporte divers ingrédients et un même ingrédient peut être utilisé sur plusieurs pizzas. Il est donc nécessaire de proposer un nouveau schéma relationnel en ajoutant deux relations: une table ingredient et une table composition qui permet de faire le lien entre les ingrédients et les pizzas.
Écrire le schéma relationnel des deux nouvelles tables en indiquant clairement les clés primaires et les clés étrangères.
12.
Afin de pouvoir permettre à chaque client de consulter sur Internet l'historique de ses commandes, le prestataire propose de mettre la base de données sur un serveur accessible par des requêtes extérieures et non uniquement via le réseau interne utilisé par le restaurant.
Indiquer les problèmes soulevés par cette démarche et les précautions à prendre pour y remédier.

Corrigé
Corrigé proposé par AprenAI (non officiel)
1. Donner deux avantages que peut apporter un système de gestion de bases de données par rapport à l'utilisation d'un simple tableur dans lequel on ajouterait chaque nouvelle commande sur une ligne.
Réponse : 1. Éviter la redondance des données et les incohérences. 2. Assurer l'intégrité des données grâce aux contraintes (clés primaires, étrangères, types). (Autres réponses acceptées : gestion des accès concurrents multi-utilisateurs, sécurité et droits d'accès, passage à l'échelle sur de gros volumes).
2. Indiquer, en justifiant, s'il est possible d'avoir deux pizzas avec le même numéro de pizza, le même prix et avec une couleur de pizza différente.
Réponse : Non, ce n'est pas possible.
3. Donner un exemple de clé étrangère en précisant la relation à laquelle elle appartient ainsi que l'attribut et la relation qu'elle référence.
Réponse : Dans la relation commande, l'attribut id_client est une clé étrangère qui référence la clé primaire id de la relation client. (Ou : dans commande, num_pizza référence num de pizza).
4. Écrire le résultat renvoyé par la requête SQL suivante : SELECT prix FROM pizza WHERE couleur = 'Bianca';
Réponse : 11.5 et 15.5
5. Écrire une requête SQL qui donne les couleurs des pizzas dont le prix est strictement supérieur à 15 €.
Réponse : ```sql SELECT couleur FROM pizza WHERE prix > 15; ``` ```sql SELECT DISTINCT couleur FROM pizza WHERE prix > 15; ```
6. Écrire une requête SQL qui donne les prénoms des clients qui n'ont pas payé une pizza qui leur a pourtant été livrée.
Réponse : ```sql SELECT client.prenom FROM client JOIN commande ON client.id = commande.id_client WHERE commande.livraison = 1 AND commande.paiement = 0; ``` ```sql SELECT DISTINCT prenom FROM client JOIN commande ON client.id = commande.id_client WHERE livraison = 1 AND paiement = 0; ```
Les réponses des 6 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 1 - Partie A · Antilles-Guyane 2026 (jour 2) ›