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;

Énoncé: Exercice 2 - Partie B : Base de données · Bac Numérique et Sciences Informatiques Amérique du Sud 2023 (jour 2)

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) ›

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