Exercices de jointure
Utilisation de jointures et composition
On propose ici quelques exemples de l'utilisation de l'opérateur de jointure.
Question
Quel est le résultat de l'opération \(\textsc{Coordonnees}\Join \textsc{Seance}\) ? Y a-t-il une différence formelle avec l'opération \(\textsc{Seance}\Join \textsc{Coordonnees}\) ? L'opération \(\textsc{Film}\Join \textsc{Coordonnees}\) a-t-elle un sens ?
Solution
Tout d'abord, par sa définition, l'opérateur de jointure est symétrique : \(\textsc{Coordonnees}\Join \textsc{Seance}\) et \(\textsc{Seance}\Join \textsc{Coordonnees}\) donnent le même résultat. Ce résultat peut être représenté par le tableau :
Salle | Adresse | Telephone | Titre | Horaire |
---|---|---|---|---|
Gaumont Opéra | 31, bd des Italiens | 01 47 42 60 33 | Cris et chuchotements | 20 : 30 |
Saint André des Arts | 30, rue Saint André des Arts | 01 43 26 48 18 | Mais qui à tué Harry ? | 20 : 15 |
Georges V | 144, av. des Champs Elysées | 01 45 62 41 46 | Cris et chuchotements | 22 : 15 |
Les 7 Parnassiens | 98, bd du Montparnasse | 01 43 20 32 20 | Cris et chuchotements | 20 : 45 |
Formellement l'opération \(\textsc{Film}\Join \textsc{Coordonnees}\) a un sens. Elle renverra le produit cartésien des deux relations.
Question
Écrire la formule permettant d'obtenir les horaires du film Cris et chuchotements.
Solution
On doit combiner les trois opérateurs. On reprend pour cela la jointure de l'exercice précédent : \(\pi_{\textbf{\texttt{Horaire}}}(\sigma_{\textbf{\texttt{Titre}}="Cris\ et\ chuchotements"}(\textsc{Film}\Join \textsc{Seances}))\).
Question
Écrire la formule permettant de répondre à la question "Où peut-on voir des films de Hitchcock ?"
Solution
On commence par sélectionner les films de Hitchcock, puis on fait la jointure avec la relation Seance pour ne garder que les séances des films de Hitchcock. On projette enfin sur les Salles :
\(\pi_{\textbf{\texttt{Salle}}}(\textsc{Seance}\Join (\sigma_{\textbf{\texttt{Directeur}}="Hitchcock"}(\textsc{Film})))\).
On aurait aussi pu écrire
\(\pi_{\textbf{\texttt{Salle}}}\left(\left(\pi_{\textbf{\texttt{Salle,Titre}}}(\textsc{Seance})\right)\Join\left(\pi_{\textbf{\texttt{Titre}}}\left(\sigma_{\textbf{\texttt{Directeur}}="Hitchcock"}(\textsc{Film})\right)\right)\right)\) ;
La séquence sur l'optimisation vous sensibilisera aux différences.
Question
Écrire la formule permettant de répondre à la question "Quels sont les numéros de téléphone des Salles qui projettent un film de Hitchcock ?"
Solution
On commence par sélectionner les titres des films de Hitchcock, puis on effectue une jointure avec la relation Seance et on sélectionne les les salles qui projettent un de ses films. Puis il faut effectuer une jointure avec la relation Coordonnees pour obtenir les numéros de téléphone :
\(\pi_{\textbf{\texttt{Telephone}}}(\textsc{Coordonnees}\Join \pi_{\textbf{\texttt{Salle}}}(\textsc{Seance}\Join \pi_{\textbf{\texttt{Titre}}} (\sigma_{\textbf{\texttt{Directeur}}="Hitchcock"}(\textsc{Film}))))\)