Exercice 3 - Partie B : Bases de données · Bac Numérique et Sciences Informatiques Amérique du Nord 2025 (jour 2 bis)

Thème : Bases de données relationnelles, SGBD et langage SQL · Tiré du sujet Jour 2 bis (2025)

Énoncé

Exercice 3 (8 points)

Cet exercice porte sur la programmation objet en langage Python, les graphes et les bases de données.

Partie A

Nous avons représenté un parc d’attractions par un graphe. Les sommets de ce graphe sont des attractions. Chaque attraction a une durée (en minutes). Les arêtes de ce graphe représentent la durée (en minutes) pour aller d’une attraction à une autre. Dans ce parc d’attractions, toutes les attractions ont des noms uniques.

Les attractions sont représentées par des objets de la classe Attraction dont le code est donné ci-dessous.

class Attraction:

def __init__(self, nom, duree):

self.nom = nom

self.duree = duree

self.voisines = []

Le graphe précédent peut être représenté, d’une façon incomplète, en langage Python ainsi:

Partie B: Bases de données

Dans cette partie de l'exercice, 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), JOIN... ON; construire des requêtes d'insertion et de mise à jour à l'aide de UPDATE, INSERT, DELETE; affiner les recherches à l'aide de DISTINCT, ORDER BY.

Les visiteurs qui sont d'accord reçoivent un bracelet magnétique à l'entrée du parc d'attractions. Ce bracelet permet de les identifier et de les prendre en photos à différents points clés des attractions. Ces photos leur sont ensuite proposées à la vente. Le système est calibré pour ne pas prendre de photos des personnes ne le souhaitant pas. Les données personnelles associées sont stockées en France et les utilisateurs disposent, conformément à la loi, d'un droit de consultation, de retrait et de rectification.

Pour gérer ces photos et leur vente, le parc d'attractions utilise une base de données. La figure suivante présente une représentation des trois relations de cette base dont les clés primaires sont les attributs soulignés, appelés id dans chaque relation et dont les clés étrangères sont précédées d'un caractère #. Pour chaque attribut est indiqué le nom de l'attribut, et son type après le symbole: le type int représente des entiers, le type text des chaînes de caractères et le type float des nombres flottants.

L'attribut date de la relation visiteur est une chaîne de caractères au format 'année-mois-jour', l'année étant écrite sur 4 chiffres, le mois sur 2 chiffres et le jour sur 2 chiffres. Par exemple, le 1er février 2025 sera représenté par la chaîne de caractères '2025-02-01'. L'attribut heure de la relation photo est une chaîne de caractères au format 'heures:minutes', en utilisant 2 chiffres pour les heures et 2 chiffres pour les minutes. Par exemple, l'heure 5 heures 49 minutes sera représentée par '05:49'.

14.

Expliquer ce qu'est une clé primaire, puis ce qu'est une clé étrangère.

15.

En langage SQL, les opérateurs de comparaison classiques peuvent être utilisés pour comparer des chaînes de caractères entre elles. Par exemple, la condition '2025-01-01' > '2024-01-01' serait évaluée à vrai.

La fonction d'agrégation SUM permet de renvoyer la somme des valeurs d'un attribut. Par exemple, le code ci-dessous permet de déterminer le prix total des photos de la relation photo:

SELECT SUM(prix)

FROM photo;

Écrire une requête en langage SQL qui permet d'obtenir les noms et prénoms des visiteurs présents le 11 janvier 2025 sans doublons.

16.

Un visiteur, Alan TURING, est venu plusieurs fois dans le parc d'attractions en 2024. À chaque visite, il a acheté toutes les photos proposées.

Écrire une requête en langage SQL qui permet d'obtenir la somme totale de ce qu'Alan TURING a payé pour des photos au parc d'attractions en 2024.

17.

Suite à un problème technique, les gérants ont utilisé la requête suivante:

SELECT visiteur.nom, prenom

FROM visiteur JOIN photo

ON visiteur.id = photo.id_visiteur

JOIN attraction

ON attraction.id = photo.id_attraction

WHERE attraction.nom = 'Grande roue'

AND heure = '12:34'

AND date = '2024-07-26';

Expliquer ce qu'ils voulaient savoir.

18.

Les gérants du parc d'attractions décident d'étoffer leur offre d'achat de photos en proposant pour un cliché plusieurs formats et supports (A5, A6, poster, porte-clé, …).

Proposer des modifications de la base de données précédente pour qu'elle puisse prendre en charge cette nouvelle offre.

Énoncé: Exercice 3 - Partie B : Bases de données · Bac Numérique et Sciences Informatiques Amérique du Nord 2025 (jour 2 bis)

Corrigé

Corrigé proposé par AprenAI (non officiel)

Expliquer ce qu'est une clé primaire, puis ce qu'est une clé étrangère.

Réponse : Une clé primaire est un attribut (ou un ensemble d'attributs) qui permet d'identifier de façon unique chaque enregistrement d'une relation ; dans cette base de données, c'est l'attribut id de chaque table. Une clé étrangère est un attribut d'une relation qui fait référence à la clé primaire d'une autre relation, ce qui permet de créer un lien entre les deux tables ; par exemple, #id_visiteur dans la relation photo référence l'attribut id de la relation visiteur.

Écrire une requête en langage SQL qui permet d'obtenir les noms et prénoms des visiteurs présents le 11 janvier 2025 sans doublons.

Réponse : ```sql SELECT DISTINCT nom, prenom FROM visiteur WHERE date = '2025-01-11'; ``` ```sql SELECT DISTINCT visiteur.nom, visiteur.prenom FROM visiteur WHERE visiteur.date = '2025-01-11'; ```

Écrire une requête en langage SQL qui permet d'obtenir la somme totale de ce qu'Alan TURING a payé pour des photos au parc d'attractions en 2024.

Réponse : ```sql SELECT SUM(prix) FROM visiteur JOIN photo ON visiteur.id = photo.id_visiteur WHERE nom = 'TURING' AND prenom = 'Alan' AND date LIKE '2024%'; ``` ```sql SELECT SUM(photo.prix) FROM visiteur JOIN photo ON visiteur.id = photo.id_visiteur WHERE visiteur.nom = 'TURING' AND visiteur.prenom = 'Alan' AND date >= '2024-01-01' AND date <= '2024-12-31'; ```

Les réponses des 2 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 2025 (jour 2) · Exercice 3 - Partie B · Amérique du Nord 2024 (jour 1) ›

Plus d’exercices de Bases de données relationnelles, SGBD et langage SQL