Ceci est une ancienne révision du document !
L'objectif de ce TME est de comprendre l'évaluation d'une requête de jointure entre 2 relations qui sont situées sur 2 sites distincts.
On dispose de 2 SGBD : site 1 et site 2 Données:
La couche BDR est implémentée sur le site 1.
Créer les tables J,C,F (déjà fait lors du TME précédent)
@base3
Supprimer les joueurs J du site 1 (les joueurs seront stockés seulement sur le site 2)
CONNECT E1234567/E1234567@ora11 DROP TABLE J; DESC J (doit répondre: "table inconnue")
Créer la table J des joueurs dans le site 2 (le serveur du site 2 s'appelle ora10)
CONNECT E1234567/E1234567@ora10 --(avec votre propre numéro d'étudiant) @base3 DROP TABLE C cascade constraints; DROP TABLE F;
Relier les sites : La couche BDR (site1) doit pouvoir se connecter au site 2
CONNECT E1234567/E1234567@ora11 DROP DATABASE link site2; CREATE DATABASE link site2 CONNECT TO E1234567 IDENTIFIED BY "E1234567" USING 'ora10'; --(avec votre propre numéro d'étudiant)
Vérifier le bon fonctionnement du lien
DESC J@site2
Ajouter un club dans une nouvelle ville. Ce club n'a que 10 joueurs ce qui permettra, par la suite, de poser une requête de jointure très sélective.
INSERT INTO C VALUES( 6000, 'petit club', 2, 'Combourg');
CREATE VIEW J AS SELECT * FROM j@site2;
Pour chaque requête, répondre aux questions
Afficher les joueurs avec leur club
SELECT * FROM J, C WHERE j.cnum = c.cnum;
SELECT * FROM J, C WHERE j.cnum = c.cnum AND salaire > 59000
La sélection est-elle poussée sur le site 2 ?
SELECT * FROM J, C WHERE j.cnum = c.cnum AND ville = 'Combourg';
La directive driving_site prend en argument le nom de la variable j1 associée à la relation stockée sur le site dans lequel oracle doit traiter la jointure (i.e. le site 2).
SELECT /*+ driving_site(j1) */ * FROM J j1, C c1 WHERE j1.cnum = c1.cnum AND ville = 'Combourg';
Aller vers BDR