Précédent Index Suivant

3   Optimisation (5,5 points)

Soit le schéma relationnel :
Journaliste (JID,Nom,Prenom)
Journal (Titre,Redaction,ReID)
La table Journaliste stocke les informations (Nom, Prenom) sur les journalistes (JID est le numéro d'identification du journaliste). La table Journal stocke pour chaque rédaction d'un journal le titre du journal (Titre), le nom de la rédaction (Redaction) et le JID de son rédacteur (ReID).

Soit la requête :
select Nom 
from Journal, Journaliste 
where Titre='Le Monde' And JID=ReID And Prenom='Jean'
  1. (0,5 point) Que calcule cette requête ?



    Solution :

    Les noms des rédacteurs du journal le Monde qui s'appellent Jean.

  2. (1 point) Voici deux requêtes algébriques :
    pNom(s
     
    Titre='Le Monde' Ù Prenom='Jean'
    (Journaliste |><|JID=ReIDJournal))
    pNom(sPrenom='Jean'Journaliste |><|JID=ReID sTitre='Le Monde'(Journal))
    Est-ce que les deux requêtes retournent le même résultat (sont équivalentes)? Est-ce qu'une requête est meilleure que l'autre si on considère les deux requêtes comme plans d'exécution? Expliquez votre réponse.
Le titre du journal est une clé au sens relationnel : il n'y a pas deux journaux ayant le même titre. On a seulement un index dense sur la table Journaliste sur l'attribut JID : I-Journaliste-JID.
  1. (0,5 points) Donner le meilleur plan d'exécution physique sous forme arborescente ou sous forme d'une expression EXPLAIN. Les noeuds de l'arbre sont des opérateurs comme balayage séquentiel (BS), traversée d'index (TI), accès direct (par adresse) à une table (AD), tri, fusion, boucles imbriquées (BI), etc.
  2. (1,5 points) Expliquez en détail ce plan.

    Solution :

    Réponse : par balayage séquentiel de la table Journal, on obtient les nuplets correspondant aux rédactions du Monde (sélection sur le titre). On fait ensuite une jointure par boucles imbriquées : la valeur de l'attribut ReID de ce nuplet sert de clé d'accès à l'index I-Journaliste-JID. La traversée de cet index donne les adresses des nuplets de la table Journaliste correspondant aux rédacteurs du Monde. Cette table est accédée directement (par adresse du nuplet correspondant au ReID du Monde). On projette le nuplet obtenu alors sur le champ Nom après avoir effectué une sélection sur le prénom.
Soit Bal le nombre de blocs de la table Journal et Biste le nombre de blocs de la table Journaliste. Soit BTI le nombre de blocs lus lorsqu'on traverse l'index I-Journaliste-JID.

  1. (1 point) Quel est le coût en nombre de lectures de blocs pour exécuter ce plan ?
  2. (1 point) De combien de buffers a-t-on besoin en mémoire centrale pour exécuter ce plan (chaque buffer a pour taille la taille d'un bloc) ?



    Solution : Réponse : Bal + BTI + 1. On a besoin d'un buffer pour lire un bloc de la table Journal, d'un buffer pour lire le contenu d'un noeud (feuille) d'index et d'un peu de mémoire pour stocker le nuplet de Journaliste.

Précédent Index Suivant