© Your Copyright
L’objectif de ces exercices est de savoir formuler une requête sur plusieurs tables et de créer une vue sur les informations « métier » « Au tournoi des Six Nations ».
Ecrire une requête SQL répondant à la question :
- \(Q_1\) : « Rechercher les informations sur les matchs et les joueurs des équipes qui ont marqués (essais,transformations, penalites) ».
Le résultat sera trié par l’identifiant des équipes qui jouent à domicile et le nom de joueurs qui ont marqués
On peut faire un produit cartésien (\(\times\)) entre les tables matchs,selections,joueurs
en vérifiant que chaque joueur de l’ensemble des joueurs
est bien lié aux matchs
par les selections
. On récupère seulement les joueurs qui ont marqués
des essais,transformations ou penalités.
Ecriture en algèbre relationnelle :
- \(R_1 = \sigma_{[essais > 0 \lor transformations > 0 \lor penalites > 0]}(selections)\)
- \(T_1 = \times(R_1,joueurs)\)
- \(R_2 = \sigma_{[R_1.id\_joueur=joueurs.id\_joueur]}(T_1)\)
- \(T_2 = \times(matchs,R_2)\)
- \(Q_1 = \sigma_{[matchs.id\_match=R_2.id\_match]}(T_2)\)
On peut aussi faire une jointure naturelle (\(\Join_{[]}\)) puisque les matchs
sont liés aux joueurs
par des noms de colonnes communes (id_match,id_joueur
)
sur la table selections
.
Ecriture en algèbre relationnelle :
- \(R_1 = \sigma_{[essais > 0 \lor transformations > 0 \lor penalites > 0]}(selections)\)
- \(NJ_1 = \Join_{[]}(R_1,joueurs)\)
- \(NJ_2 = \Join_{[]}(matchs,NJ_1)\)
resultats
sur les principales informations permettant de visualiser les résultats des matchs du tournoi des six nations :(id_locaux,id_visiteurs,jour,locaux_score, visiteurs_score)
(nom, id_equipe)
essais,transformations, penalites
.Le résultat de la requête sera trié par l’identifiant des équipes qui jouent à domicile et le nom de joueurs qui ont marqués.
On “encapsule” dans une vue (CREATE VIEW resultats AS
) une requête SQL
pour consulter plus simplement les informations sur les résulats intéressants
des matchs :
(id_locaux,id_visiteurs,jour,locaux_score, visiteurs_score)
des joueurs des équipes :
(nom, id_equipe)
qui ont marqués :
essais,transformations, penalites
.
Ecriture en algèbre relationnelle de la requête à mettre dans une vue :
- \(NJ_1 = \Join_{[]}(selections,joueurs)\)
- \(NJ_2 = \Join_{[]}(matchs,NJ_1)\)
- \(R_1 = \sigma_{[essais > 0 \lor transformations > 0 \lor penalites > 0]}(NJ_2)\)
- \(Q_1 = \Pi_{(id\_locaux, id\_visiteurs, jour, .., essais,transformations, penalites)}(R_1)\)