Exercice 3 - Partie B · Bac Numérique et Sciences Informatiques Amérique du Nord 2024 (jour 1)
Thème : Bases de données relationnelles, SGBD et langage SQL · Tiré du sujet Jour 1 (2024)
Énoncé
EXERCICE 3 (8 points)
Cet exercice porte sur la programmation Python, la modularité, les bases de données relationnelles et les requêtes SQL.
Une flashcard, autrement appelée carte de mémorisation, est une carte papier sur laquelle se trouve au recto une question et au verso la réponse à cette question. On les utilise en lisant la question du recto puis en vérifiant notre réponse à celle du verso. Une étudiante souhaite réaliser des flashcards numériquement.
Partie A
L'étudiante souhaite stocker les questions/réponses de ses flashcards dans un fichier au format csv. Ce format permet de stocker textuellement des données tabulaires. La première ligne du fichier contient les descripteurs: les noms des champs renseignés par la suite. Pour être en mesure de les identifier, chaque champ est séparé par un caractère appelé séparateur. C'est la virgule qui est le plus couramment utilisée, mais cela peut être d'autres caractères de ponctuation.
Le langage Python dispose d'un module natif nommé csv qui permet de traiter de tels fichiers. La méthode DictReader de ce module prend en argument un fichier csv et le séparateur utilisé. Elle permet d'extraire les données contenues dans le fichier. Voici un exemple de fonctionnement.
fichier exemple.csv
champ1,champ2
a,7
b,8
c,9 code Python
import csv
with open('exemple.csv','r') as fichier:
donnees = list(csv.DictReader(fichier,delimiter=','))
print(donnees) affichage généré à l'exécution
[{'champ1': 'a', 'champ2': '7'},
{'champ1': 'b', 'champ2': '8'},
{'champ1': 'c', 'champ2': '9'}] Voici un extrait du fichier flashcards.csv réalisé par l'étudiante:
discipline;chapitre;question;réponse
histoire;crise de 1929;jeudi noir - date;24 octobre 1929
histoire;crise de 1929;jeudi noir - quoi;krach boursier
histoire;2GM;l'Axe;Allemagne, Italie, Japon
histoire;2GM;les Alliés;Chine, États-Unis, France, Royaume-Uni, URSS
Pour améliorer sa mémorisation sur le long terme, l'étudiante décide de mettre en œuvre le concept des boites de Leitner. Dans cette méthode, il s'agit d'espacer dans le temps la révision des flashcards si l'étudiante répond correctement. Elle imagine donc une base de données qui lui permettra de conserver pour chaque question la date à laquelle elle doit de nouveau être posée. Elle décide que les questions seront réparties en 5 boites. Initialement, toutes les questions seront placées dans la boite 1. Les questions de la boite 1 sont posées tous les jours, celles de la boite 2 tous les deux jours, celles de la boite 3 tous les quatre jours, celles de la boite 4 tous les huit jours et celles de la boite 5 tous les quinze jours. Si l'étudiante donne la bonne réponse à une question et que la question n'appartient pas à la boite 5, son numéro de boite est incrémenté (augmenté de 1). Si l'étudiante ne donne pas la bonne réponse, la question revient dans la boite 1.
Elle met en œuvre une base de données relationnelle contenant 4 tables discipline, chapitre, boite et question (en réalité la table est nommée flashcard).
La table discipline a deux attributs: id (INT, clé primaire) et lib (TEXT, libellé de la discipline).
La table chapitre a trois attributs: id (INT, clé primaire), lib (TEXT, libellé du chapitre) et id_disc (INT, identifiant de la discipline à laquelle appartient ce chapitre).
La table boite contient l'ensemble des cinq boites existantes. Elle a trois attributs: id (INT, clé primaire), lib (TEXT, libellé de la boite) et frequence (INT, nombre de jours séparant deux interrogations d'une question appartenant à cette boite).
Table boite
Id · lib · frequence
1 · tous les jours · 1
2 · tous les deux jours · 2
3 · tous les quatre jours · 4
4 · tous les huit jours · 8
La table flashcard contient les questions-réponses. Elle a six attributs: id (INT, clé primaire), id_ch (INT, identifiant du chapitre), id_boite (INT, identifiant numéro de la boite), question (TEXT, texte au recto), reponse (TEXT, texte au verso), date_interro (DATE, date de la prochaine interrogation).
Initialement date_interro sera la date d'insertion de la question dans la base de données.
7.
Écrire une requête SQL qui complète la table boite et insère la boite 5 de libellé 'tous les quinze jours' et de fréquence 15.
Une requête sur la table flashcard affiche l'enregistrement suivant:
5, 2, 1, Pearl Harbor - date, 6 décembre 1941
8.
Écrire une requête SQL pour mettre à jour la date de Pearl Harbor renvoyée. La bonne date est le 7 décembre 1941.
9.
Écrire une requête SQL qui permet d'obtenir la liste des libellés des disciplines.
10.
Écrire une requête SQL qui permet d'obtenir la liste des libellés des chapitres de la discipline 'histoire'.
11.
Écrire une requête SQL qui permet d'obtenir la liste des identifiants des flashcards de la discipline 'histoire'.
12.
Écrire une requête SQL pour supprimer toutes les flashcards de la boite d'identifiant 3.

Corrigé
Corrigé proposé par AprenAI (non officiel)
7. Écrire une requête SQL qui complète la table boite et insère la boite 5 de libellé 'tous les quinze jours' et de fréquence 15.
Réponse : ```sql INSERT INTO boite (id, lib, frequence) VALUES (5, 'tous les quinze jours', 15); ```
8. Écrire une requête SQL pour mettre à jour la date de Pearl Harbor renvoyée. La bonne date est le 7 décembre 1941.
Réponse : ```sql UPDATE flashcard SET reponse = '7 décembre 1941' WHERE id = 5; ```
9. Écrire une requête SQL qui permet d'obtenir la liste des libellés des disciplines.
Réponse : ```sql SELECT lib FROM discipline; ```
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 3 - Partie B : Bases de données · Amérique du Nord 2025 (jour 2 bis) · Exercice 2 · Amérique du Nord 2024 (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 · Amérique du Nord 2025 (jour 1)
- 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 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)