Exercice 2 - Partie B : Base de données · Bac Numérique et Sciences Informatiques Amérique du Sud 2023 (jour 2)
Thème : Bases de données relationnelles, SGBD et langage SQL · Tiré du sujet Jour 2 (2023)
Énoncé
Exercice 2 (4 points)
Les deux parties de cet exercice sont indépendantes.
Le jeu de go est un jeu de société originaire de Chine. Il oppose deux adversaires qui placent à tour de rôle des pierres, respectivement noires et blanches, sur un plateau.
Partie A: Réseau
Baduk et Igo jouent une partie de go grâce à une application en ligne, hébergée sur un serveur. La portion de réseau au voisinage des ordinateurs de Baduk, d'Igo et du serveur de jeu est représentée ci-dessous.
Partie B: Base de données
Dans cette partie, on pourra utiliser les mots clés suivants du langage SQL:
SELECT, INSERT INTO, DISTINCT, WHERE, UPDATE, JOIN, COUNT, MIN, MAX, ORDER BY.
La fonction d'agrégation COUNT(*) renvoie le nombre d'enregistrements de la requête. Les fonctions d'agrégation MIN(propriete) et MAX(propriete) renvoient respectivement la plus petite et la plus grande valeur de l'attribut propriete pour les enregistrements de la requête. La commande ORDER BY propriété permet de trier les résultats d'une requête selon l'attribut propriété.
Le responsable de la fédération internationale de jeu de go enregistre dans une base de données les résultats de parties historiques.
Il définit pour cela des relations Joueur, Partie et Tournoi qui suivent le schéma relationnel suivant (les clés primaires sont soulignées et les clés étrangères sont précédées du caractère #).
Les clés primaires sont soulignées et les clés étrangères sont précédées du caractère #.
Ainsi l'attribut idjnoir de la relation Partie est une clé étrangère qui fait référence à l'attribut idjoueur de la relation Joueur.
idjnoir et idjblanc identifient les joueurs ayant respectivement les pierres noires et les pierres blanches.
3.
On suppose que ce schéma relationnel a été implémenté dans un système de gestion de base de données. La base de données est vide et on souhaite enregistrer les résultats d'un premier tournoi à l'aide des commandes SQL suivantes.
1 INSERT INTO Joueur (idjoueur, nom, naissance, nation)
2 VALUES (1, 'Dosaku', 1645, 'Japon'),
3 (2, 'Genan Inseki', 1798, 'Japon'),
4 (3, 'Shusaku', 1829, 'Japon');
5
6 INSERT INTO Partie (idjnoir, idjblanc, tournoi, jour, score)
7 VALUES (2, 3, 1, '1846-09-12', -2);
8
9 INSERT INTO Tournoi (idtournoi, nom, pays)
10 VALUES (1, 'Osaka', 'Japon');
a.
Quelle est la nature de l'erreur produite par l'exécution de cette succession de commandes ? Justifier.
b.
Comment corriger la succession des commandes SQL données pour que le traitement s'effectue sans erreur ?
On donne ci-dessous un extrait des enregistrements contenus dans la base de données.
Joueur
idjoueur
nom
naissance
nation
1 · Dosaku · 1645 · Japon
2 · Genan Inseki · 1798 · Japon
3 · Shusaku · 1829 · Japon
4 · Kitani Minuro · 1909 · Japon
5 · Go Seigen · 1914 · Chine
6 · Sakata Eio · 1920 · Japon
7 · Rin Kaiho · 1942 · Taiwan
8 · Cho Chikun · 1953 · Corée
9 · Rui Naiwei · 1963 · Chine
10 · Lee Changho · 1975 · Corée
Partie
idjnoir
idjblanc
tournoi
jour
score
2 · 3 · 1 · 1846-09-12 · -2
4 · 5 · 0 · 1933-11-12 · 0
5 · 4 · 2 · 1939-09-28 · 2
5 · 6 · 0 · 1953-11-19 · 999
5 · 4 · 3 · 1961-06-28 · 999
6 · 5 · 3 · 1962-08-05 · 0
7 · 6 · 3 · 1967-08-09 · 2
7 · 8 · 4 · 1983-05-16 · -999
10 · 8 · 6 · 1993-04-24 · 0.5
9 · 10 · 5 · 2000-01-04 · 999
Tournoi
idtournoi
nom
pays
0 · Inconnu · Autre
1 · Osaka · Japon
2 · Kamakura games · Japon
3 · Meijin · Japon
4 · Honinbo · Japon
5 · Guksu · Corée
6 · Ton Yang Cup · Corée
4.
On considère la requête SQL ci-dessous.
SELECT COUNT(*) FROM Partie
WHERE idjnoir = 4 OR idjblanc = 4;
a.
b.
Expliquer avec une phrase ce que renvoie cette requête.
5.
6.
7.
Expliquer avec une phrase ce que renvoie la requête ci-dessous.
SELECT DISTINCT nom
FROM Joueur
JOIN Partie
ON (Joueur.idjoueur = Partie.idjnoir
OR Joueur.idjoueur = Partie.idjblanc)
WHERE Partie.tournoi = 3;

Corrigé
Corrigé proposé par AprenAI (non officiel)
3. a. Quelle est la nature de l'erreur produite par l'exécution de cette succession de commandes ? Justifier.
Réponse : Erreur de contrainte d'intégrité référentielle (violation de clé étrangère). La commande tente d'insérer dans la table Partie un enregistrement faisant référence au tournoi d'identifiant 1, alors que la table Tournoi est encore vide.
3. b. Comment corriger la succession des commandes SQL données pour que le traitement s'effectue sans erreur ?
Réponse : Déplacer l'instruction d'insertion dans la table Tournoi (lignes 9 et 10) avant l'instruction d'insertion dans la table Partie (lignes 6 et 7).
4. a. Quel serait l'affichage produit par cette requête, appliquée aux seuls extraits des enregistrements donnés dans les tableaux précédents ?
Réponse : 3
4. b. Expliquer avec une phrase ce que renvoie cette requête.
Réponse : Cette requête renvoie le nombre total de parties jouées par le joueur dont l'identifiant est 4 (Kitani Minuro), qu'il ait joué avec les pierres noires ou les pierres blanches.
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 1 - Partie B · Amérique du Sud 2023 (jour 1) · Exercice 1 · Amérique du Sud 2022 (jour 1) ›