SELECT nom_directeur, nom_acteur FROM Directeur Join Acteur WHERE Directeur.nom_film = Acteur.nom_filmPour évaluer cette requête, il faut calculer la jointure Directeur Acteur. Pour l'éxecution des jointures, décrivez et évaluez la complxité de l'algorithme avec boucles imbriquées et avec tri-fusion. Dans les deux cas on tiendra compte des mouvements entre mémoire centrale et disque et on évluera le nombre d'entrées-sorties.
Pour évaluer le coût (le nombre des E/S) de cet algorithme il faut connaitre les paramètres suivants: (a) la taille de chacune de deux relations et (b) la taille disponible en Mémoire Centrale pour réaliser cette opération.
Resultat = Ø tant que R n'est pas finie lire tuple tR de R tant que S n'est pas finie lire tuple tS de S si tR.a = tS.a, Resultat = Resultat union { tR tS } ftq ftq
Table 8.1 : Esquisse de l'algorithme des Boucles Imbriquées
Supposons que les deux relations à joindre ont une taille supérieure à la taille de l'espace Mémoire Centrale disponible. On suppose un tampon en m'éoire centrale de b+2 pages. On affecte en Mémoire centrale b pages (tampon principal) pour lire des nuplets de la table Directeur, une page (tampon auxiliaire) pour lire des nuplets de la table Acteur et une page pour stocker le résultat de la jointure (tampon écriture). On charge séquentiellement la relation Directeur par paquets de b pages dans le tampon principal (Figure 8.1)../figures/relations_mc.eps
Figure 8.1 : Relations Directeur et Acteur sur disque, et image de la Mémoire Centrale
cout(Join_tri_fusion) = | { { { { { |
|