Adloun

Corrigé bac NSI 2025 Métropole jour 1 — Exercice 1 : Collection de guitares de Slash : schéma relationnel et requêtes SQL

Sujet officiel du baccalauréat, spécialité numérique et sciences informatiques, session 2025. Corrigé rédigé par Ibrahim Alame.

Sujet officiel (PDF)

Énoncé

Cet exercice porte sur les bases de données relationnelles et les requêtes SQL.

Dans cet exercice, on pourra utiliser les clauses du langage SQL pour :

Dans un schéma relationnel, on utilisera les conventions suivantes :

Le guitariste Slash possède une incroyable collection de guitares. Maud est une grande fan de Slash. Elle décide de faire un inventaire de la collection de guitares sous la forme d'une base de données relationnelle.

Partie A

Dans cette partie, Maud utilise la relation suivante :

inventaire (<u>id, marque, modele, annee, num_ser, prix)

num_ser représente le numéro de série d'une guitare. Il est unique pour chaque guitare d'une même marque. Le prix est en euro.

Voici un extrait de la table inventaire.

inventaire

idmarquemodeleanneenum_serprix
1GibsonLes Paul Goldtop1956@70562100000
2GibsonLes Paul Goldtop19888173834920000
3GibsonLes Paul Standard1959@90663250000
4GibsonLes Paul Standard19878175753225000
5FenderTelecaster1952000230150000
6FenderTelecaster19658134567310000
7FenderStratocaster1956001359200000
8FenderStratocaster19658175753215000

1. Expliquer pourquoi l'attribut num_ser ne peut pas être une clé primaire de la relation inventaire.

2. Donner, sous forme de tableau, le résultat de la requête suivante appliquée à l'extrait de table précédent.


SELECT marque, modele
FROM inventaire
WHERE annee = 1956

3. Écrire une requête SQL permettant d'obtenir toutes les années du modèle Les Paul Standard dans la collection.

4. Écrire une requête SQL permettant d'obtenir tous les modèles de guitares de la marque Gibson par ordre croissant de l'année dans la collection.

5. Maud a fait une erreur de saisie pour la guitare d'identifiant id=1. L'année est en réalité 1957. Écrire une requête SQL permettant de corriger cette erreur de saisie.

Partie B

Maud change de représentation pour l'inventaire de la collection. Dans cette partie, Maud utilise maintenant les trois relations suivantes :

marque (<u>id, nom)

modele (<u>id, nom, #id_marque)

guitare (<u>id, #id_modele, annee, num_ser, prix)

Dans la relation modele, #id_marque est une clé étrangère reliée à la clé primaire id de la relation marque. Dans la relation guitare, #id_modele est une clé étrangère reliée à la clé primaire id de la relation modele.

Voici des extraits des trois tables marque, modele, guitare.

marque

idnom
1Gibson
2Fender

modele

idnomid_marque
1Les Paul Goldtop1
2Les Paul Standard1
3Telecaster2
4Stratocaster2

guitare

idid_modeleanneenum_serprix
111956@70562100000
2119888173834920000
321959@90663250000
4219878175753225000
531952000230150000
6319658134567310000
741956001359200000
8419658175753215000

6. Expliquer brièvement, en justifiant, dans quel ordre les trois tables doivent être créées.

7. Écrire une requête SQL permettant d'obtenir le numéro de série et l'année de toutes les guitares Les Paul Standard de la collection.

Maud vient d'apprendre que Slash a fait cadeau d'une de ses guitares à un ami. Elle doit donc la retirer de sa base de données.

8. Écrire une requête SQL permettant de retirer de la collection la guitare d'identifiant id=3.

Slash a aussi acheté une guitare d'une marque qu'il n'avait pas encore dans sa collection. Maud décide de la rajouter.

9. Écrire l'ensemble des requêtes SQL permettant d'ajouter la guitare suivante :

On supposera que l'on peut attribuer la valeur 3 pour l'attribut id dans la table marque pour la marque BC Rich, que l'on peut attribuer la valeur 5 pour l'attribut id dans la table modele pour le modèle Mockingbird et que l'on peut attribuer la valeur 9 pour l'attribut id dans la table guitare pour cette guitare.

Maud souhaite connaître la valeur totale des modèles Stratocaster de la collection. Son ami David lui conseille de regarder la fonction SUM. La syntaxe pour utiliser cette fonction SQL peut être similaire à celle-ci :


SELECT SUM(nom_colonne)
FROM tab

Cette requête SQL permet de calculer la somme des valeurs contenues dans la colonne nom_colonne de la table tab.

10. Écrire une requête SQL permettant de calculer la valeur totale des modèles Stratocaster de la collection de Slash.

Corrigé

Partie A

1. Une clé primaire doit identifier de façon unique chaque enregistrement de la relation : deux lignes ne peuvent jamais porter la même valeur de clé (c'est la contrainte d'intégrité d'entité). Or l'énoncé précise que num_ser n'est unique qu'au sein d'une même marque : deux guitares de marques différentes peuvent porter le même numéro de série. L'extrait le montre d'ailleurs : la Gibson Les Paul Standard d'identifiant 4 et la Fender Stratocaster d'identifiant 8 ont toutes deux le numéro de série 81757532. La valeur 81757532 désignerait deux guitares, ce qu'une clé primaire interdit. En revanche, le couple (marque, num_ser) pourrait servir de clé, et c'est pourquoi Maud a créé l'identifiant artificiel id.

2. La clause WHERE annee = 1956 ne conserve que les lignes 1 et 7, et la projection SELECT marque, modele n'en garde que deux colonnes :

marquemodele
GibsonLes Paul Goldtop
FenderStratocaster

100 % gratuit

La suite du corrigé est sur Adloun

Le corrigé rédigé en entier, partie par partie, et le tuteur pour poser des questions sur ce sujet.

Voir le corrigé complet, gratuitement

Inscription gratuite en 30 secondes (e-mail, nom d'utilisateur, mot de passe, classe ou profil), sans carte bancaire : arrivée directe sur le corrigé.

Corrigé complet gratuit →