2020-2021 BD PLS/SQL Pascal Lafourcade, Franck Glaziou & Raphaël Delage
TP2 : NBA
Les quatre fichiers nba-game-2017-18.sql, nba-player_data.sql, nba-player-2017-18.sql, et nba-tp2019.sql sont à télécharger sur le site suivant
http://sancy.univ-bpclermont.fr/~lafourcade/BDNBA/
Pour créér la base de données correspondante au MLD de la Figure 1 il faut fairestart nba-tp2019.sql;
JOUEUR PrenomNomJ Anneedebut Anneefin
Poste(G,C,F,C-F,F-G,G-F,F-C) Taille
Poids
DatenaissanceJ
GAME Dategame Horaire
#idequipedomicile
resultatdomicile(Win,Loss) Scoredomicile
#idequipeexterieur
resultatexterieur(Win,Loss) Scoreexterieur
STATS Datematch Typematch
# Equipejoueur
Locationjoueur(Home,Away) Resultatjoueur(Win,Loss)
#PrénomnomS Status(Bench,Starter) Minutes
#DatenaissanceS Points
Passes Balleperdues Interceptions Contres Fautes Tirspris Tirsmarques Tirspourcentage Tirs2pris
Tirs2marques Tirs2pourcentage Tirs3pris
Tirs3marques Tirs3pourcentage LFpris
LFmarques LFpourcentage Rebonddefensifs Rebondoffensifs Rebondtotal
#Equipeadverse
EQUIPE idequipe Ville Nom
Conference(Est,Ouest)
Figure 1 – MLD utilisé
2020-2021 BD PLS/SQL Pascal Lafourcade, Franck Glaziou & Raphaël Delage
Exercice 1 (Construction d’une fonction). (20 points)
1. (1 points) Trouver le nombre de matchs joués par Kevin Durant.
2. (2 points) Lister le(s) joueur(s) ayant marqué le plus de points dans un match dans la saison en indiquant son nom, la date du match, l’idequipede léquipe adverse et le nombre de points marqués.
3. (2 points) Lister le(s) nom(s) joueur(s) et le nombre de match joué pour ceux ayant joué le plus de match pendant la saison.
4. (5 points) Expliquer pourquoi cette requête renvoie 136 SELECT count(*) FROM GAME G, STATS S
WHERE S.Equipejoueur=’GS’ and S.datematch = G.dategame AND prenomnomS =’Kevin Durant’
AND (idequipedomicile=S.Equipejoueur OR idequipeexterieur=S.Equipejoueur);
5. (5 points) Déterminer pour Kevin Durant pour le match du 30-oct-17 quelle est l’idequipe de l’équipe qui joue à domicile.
6. (5 points) Écrire une fonction pointsmarques qui détermine pour une date de match et un joueur donnés quelle est le nombre de points marqués par ce joueur.
Exercice 2 (Construction d’une vue). (20 points)
1. (15 points) Créér une vue qui vous permettra à partir de ces tables de reconstruire une table identique à celle depalafour.nba
2. (5 points) Vérifier par 2 requêtes que le nombre de tuples de votre vue et depalafour.nbasont les mêmes.
Exercice 3 (Clef primaire). (10 points)
1. (5 points) Modifier la tableJOUEURpour ajouter un champidjoueur. Remplir ce champs avec un identifiant unique. Faire en sorte que cela devienne la clef primaire. Pour répondre à cette question vous pouvez utiliser ALTER,UPDATEetrownum.
2. (5 points) Faire les modifications nécessaires sur la tableSTATS. Vérifier que les contraintes de clefs étrangères sont bien en place en “violant des enfants”.