Exercice 3 - Partie B : Bases de données et SQL · Bac Numérique et Sciences Informatiques Polynésie 2024 (jour 1)
Thème : Bases de données relationnelles, SGBD et langage SQL · Tiré du sujet Jour 1 (2024)
Énoncé
Cet exercice porte sur la programmation Python (dictionnaire), les bases de données relationnelles et les requêtes SQL.
Le Tour de France est une course cycliste qui se déroule chaque année. Chaque jour, les coureurs s'affrontent pour remporter l'étape du jour, ce qui détermine un classement d'étape. Le coureur avec le temps cumulé le plus bas sur l'ensemble des étapes mène le classement général. Chaque participant est repéré par un dossard et appartient à une équipe. En 2023, 22 équipes de 8 coureurs, soit 176 cyclistes ont pris le départ du tour.
Partie A
Dans cette partie, nous allons utiliser trois dictionnaires.
Le premier, appelé participants, a pour clés les noms complets des coureurs et pour valeurs les numéros de dossard correspondants.
Le deuxième, appelé temps_etapes, utilise les numéros de dossard comme clés et contient une liste des temps d'arrivée de chaque étape en seconde.
Le troisième, appelé classement_general, utilise également les numéros de dossard comme clés et indique le classement général mis à jour à la fin de chaque nouvelle étape.
Par exemple, à la fin de la quatrième étape, voilà les trois premiers éléments de ces dictionnaires:
participants = {"VINGEGAARD Jonas": 1, "BENOOT Tiesj": 2, "KELDERMAN Wilco": 3,...}
temps_etapes = {1: [15781, 17199, 16995, 15928], 2: [15960, 17199, 16995, 15928],...}
classement_general = {1: 6, 2: 30, 3: 13,...}
Partie B: Bases de données et SQL
Dans cet exercice, on pourra utiliser les mots clés suivants du langage SQL:
SELECT, FROM, WHERE, JOIN, ON, INSERT INTO, VALUES, MIN, MAX, OR, AND et ORDER BY.
Si propriete est un des attributs d'une relation, les fonctions d'agrégation MIN(propriete), MAX(propriete), SUM(propriete) renvoient, respectivement, la plus petite, la plus grande valeur et la somme des valeurs des attributs sélectionnés.
On considère la base de données du tour de France 2023 dont le schéma relationnel est donné ci-dessous:
Dans ce schéma, les clés primaires sont soulignées et les clés étrangères sont précédées du symbole #.
5.
Expliquer pourquoi, dans la relation Temps, il est nécessaire de prendre le couple (numDossard, NumEtape) comme clé primaire.
6.
Expliquer ce que renvoie la requête SQL suivante:
SELECT nomCoureur
FROM Coureurs
WHERE Equipe = 'Cofidis';
7.
Écrire une requête SQL permettant d'obtenir les dates de toutes les étapes de type 'contre-la-montre' du tour de France 2023.
8.
Écrire une requête SQL permettant d'obtenir le nom du directeur sportif du coureur BARDET Romain.
9.
À la fin de la cinquième étape, on veut actualiser la table Temps avec les données du jour. Expliquer pourquoi la suite des deux requêtes SQL ci-dessous provoque une erreur.
INSERT INTO Temps VALUES (1, 5, 14267);
INSERT INTO Etapes VALUES (5, 'Montagne', 'Pau', 'Laruns', 05/07/2023);
10.
Expliquer quelle modification est à effectuer pour apporter une solution au problème constaté à la question précédente.
11.
Écrire une requête SQL donnant le temps total en course mis par BARDET Romain depuis le départ du tour de France 2023.

Corrigé
Corrigé proposé par AprenAI (non officiel)
5. Expliquer pourquoi, dans la relation Temps, il est nécessaire de prendre le couple (numDossard, NumEtape) comme clé primaire.
Réponse : Un même coureur (identifié par `numDossard`) dispute plusieurs étapes, et une étape (`numEtape`) est disputée par plusieurs coureurs. Ni `numDossard` seul ni `numEtape` seul ne sont uniques dans la table. C'est l'association des deux attributs qui identifie de façon unique chaque temps réalisé.
6. Expliquer ce que renvoie la requête SQL suivante : SELECT nomCoureur FROM Coureurs WHERE Equipe = 'Cofidis';
Réponse : Elle renvoie les noms de tous les coureurs appartenant à l'équipe 'Cofidis'.
7. Écrire une requête SQL permettant d'obtenir les dates de toutes les étapes de type 'contre-la-montre' du tour de France 2023.
Réponse : ```sql SELECT Date FROM Etapes WHERE Type = 'contre-la-montre'; ```
8. Écrire une requête SQL permettant d'obtenir le nom du directeur sportif du coureur BARDET Romain.
Réponse : ```sql SELECT Equipes.directeurSportif FROM Equipes JOIN Coureurs ON Equipes.nomEquipe = Coureurs.Equipe WHERE Coureurs.nomCoureur = 'BARDET Romain'; ```
Les réponses des 3 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 2 - Partie A · Polynésie 2025 (jour 2) · Exercice 3 - Partie B · Polynésie 2024 (jour 2) ›
Plus d’exercices de Bases de données relationnelles, SGBD et langage SQL
- Exercice 3 - Partie 2 : Interaction avec la base… · Polynésie 2026 (jour 1)
- Exercice 1 · Polynésie 2026 (jour 2)
- Exercice 3 - Bases de données relationnelles et SQL · Polynésie 2025 (jour 1)
- Exercice 2 - Partie A · Polynésie 2025 (jour 2)
- Exercice 3 - Partie B · Polynésie 2024 (jour 2)
- Exercice 1 · Polynésie 2023 (jour 1)
- Exercice 2 · Polynésie 2023 (jour 2)
- Exercice 3 · Polynésie 2022 (jour 1)
- Exercice 2 - Base de données relationnelle · Polynésie 2021 (jour 2)
- Exercice 5 - Base de données VOD · Polynésie 2021 (jour 2)