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}))))\)