Exercice 3 - Bases de données relationnelles · Bac Numérique et Sciences Informatiques Amérique du Nord 2025 (jour 1)
Thème : Bases de données relationnelles, SGBD et langage SQL · Tiré du sujet Jour 1 (2025)
Énoncé
Partie B: graphes et algorithmique
Afin de faciliter en amont les préparations des sorties, on souhaite construire le graphe non orienté des mésententes entre les enfants de l'association. Le graphe est représenté par un dictionnaire dont les clés sont les sommets du graphe, et qui associe à chaque sommet le tableau (type List en Python) de ses voisins.
Par exemple, le graphe g1 de la figure 2 est représenté par le dictionnaire suivant:
g1 = {'Elise': ['Octavie', 'Virgile'],
'Octavie': ['Elise', 'Pierre', 'Virgile'],
'Pierre': ['Octavie', 'Raphael'],
'Raphael': ['Pierre', 'Virgile'],
'Sixtine': [],
'Virgile': ['Elise', 'Octavie', 'Raphael']
}
Partie A: base de données
Une association s’occupe d’enfants de 0 à 18 ans. Elle souhaite pouvoir former des groupes d’enfants qui s’entendent durant les activités proposées.
Dans cette partie, on pourra utiliser les clauses du langage SQL pour construire des requêtes d'interrogation ( SELECT, FROM, WHERE, JOIN... ON, DISTINCT, ORDER BY) et des requêtes d'insertion et de mise à jour ( UPDATE, INSERT, DELETE).
On considère une base de données composée des 3 tables suivantes:
Table parent: nom (nom de famille), tel (numéro de téléphone), codep (code postal).
Table enfant: id (identifiant), prenom, num_parent (téléphone du parent référent), annee (année de naissance).
Table mesentente: enfant1, enfant2. Deux enfants sur la même ligne ne peuvent pas effectuer de sortie ensemble.
On considère la table enfant suivante:
enfant
id
prenom
num_parent
annee
2 · 'Hawa' · 33619911212 · 2012
3 · 'Adrien' · 33619861232 · 2013
6 · 'Kian' · 33619834521 · 2012
8 · 'Gabin' · 33619847852 · 2014
12 · 'Nakamura' · 33619732453 · 2009
14 · 'Maya' · 33600782153 · 2017
17 · 'Olivier' · 33619868564 · 2017
21 · 'Tess' · 33619835876 · 2016
23 · 'Rachelle' · 33600785482 · 2023
1.
Donner le type pour l'attribut annee de la table enfant.
2.
Expliquer quelle contrainte de domaine supplémentaire serait pertinente pour cet attribut annee.
3.
Donner un exemple d'attribut de la table enfant qui suit une contrainte de référence.
4.
En expliquant ce choix, proposer une clef primaire pour la table parent.
Suite à une mauvaise saisie, le véritable téléphone d'un parent (33619782812) a été transformé en 33600782812. On souhaite corriger cette anomalie avec la requête suivante, mais elle lève une erreur:
UPDATE parent SET tel = 33619782812 WHERE tel = 33600782812;
5.
Expliquer pourquoi la requête proposée lève une erreur.
6.
Recopier et compléter alors cette suite de commandes qui permet de changer le numéro de téléphone d'un parent du parent de nom 'Bauges' habitant au code postal 73340 et ayant pour téléphone erroné 33600782812 au lieu de son véritable téléphone 33619782812:
INSERT INTO parent VALUES ('Bauges', 33619782812, 73340);
UPDATE enfant SET num_parent =
WHERE num_parent =
;
DELETE FROM parent WHERE tel =
;
7.
En considérant la table enfant fournie, donner le résultat de cette requête SQL:
SELECT prenom
FROM enfant
WHERE annee < 2014
ORDER BY annee;
8.
Proposer une requête qui renvoie les prénoms, par ordre alphabétique, des enfants inscrits pour le parent dont le numéro de téléphone est 3619861122.
9.
Proposer une requête qui liste les identifiants et prénoms des enfants dont le parent habite dans la ville de code postal 38520.

Corrigé
Corrigé proposé par AprenAI (non officiel)
1. Donner le type pour l'attribut annee de la table enfant.
Réponse : INT / INTEGER
2. Expliquer quelle contrainte de domaine supplémentaire serait pertinente pour cet attribut annee.
Réponse : L'année doit correspondre à un âge compris entre 0 et 18 ans, par exemple : annee comprise entre 2006 et 2024 (ou CHECK (annee >= annee_courante - 18 AND annee <= annee_courante)).
3. Donner un exemple d'attribut de la table enfant qui suit une contrainte de référence.
Réponse : num_parent
4. En expliquant ce choix, proposer une clef primaire pour la table parent.
Réponse : tel
5. Expliquer pourquoi la requête proposée lève une erreur.
Réponse : Cette requête modifie la clef primaire `tel` alors qu'elle est référencée comme clef étrangère par `num_parent` dans la table `enfant`. Cela violerait la contrainte d'intégrité référentielle.
6. Valeur du nouveau numéro de téléphone dans UPDATE enfant SET num_parent = ...
Réponse : 33619782812
Les réponses des 5 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… · Amérique du Nord 2026 (jour 2) · Exercice 3 - Bases de données relationnelles et S… · Amérique du Nord 2025 (jour 2) ›
Plus d’exercices de Bases de données relationnelles, SGBD et langage SQL
- Exercice 3 - Partie A · Amérique du Nord 2026 (jour 1)
- Exercice 3 - Bases de données relationnelles et S… · Amérique du Nord 2026 (jour 2)
- Exercice 3 - Bases de données relationnelles et S… · Amérique du Nord 2025 (jour 2)
- Exercice 3 - Partie B : Bases de données · Amérique du Nord 2025 (jour 2 bis)
- Exercice 3 - Partie B · Amérique du Nord 2024 (jour 1)
- Exercice 2 · Amérique du Nord 2024 (jour 2)
- Exercice 1 - Bases de données · Amérique du Nord 2023 (jour 1)
- Exercice 1 - Partie A · Amérique du Nord 2023 (jour 2)
- Exercice 1 · Amérique du Nord 2022 (jour 1)
- Exercice 3 · Amérique du Nord 2022 (jour 2)