Vous êtes sur la page 1sur 2

Bases de donnes relationnelles : Interface PL/SQL et JDBC Textes des Travaux pratiques

1 2 3 Objectifs et organisation du TP---------------------------------------------------------1 Position du problme-----------------------------------------------------------------------1 JDBC et PLSQL -------------------------------------------------------------------------------2 3.1 3.2 3.3 Solution base exclusivement sur JDBC --------------------------------- 2 Solution base exclusivement sur PL-SQL ------------------------------ 2 Synthse-------------------------------------------------------------------------- 2

Merci de communiquer toute correction ou remarque sur ce document : Philippe.Picouet@enst-bretagne.fr

1 Objectifs et organisation du TP
Lobjectif de ce TP est dillustrer lincapacit de SQL dexprimer des requtes dductives. Face de telles requtes, il ny a pas dautre solution que de dvelopper une application qui permet dvaluer ce que SQL ne permet pas dexprimer. Deux technologies sont examines pour traiter ce problme : une solution base sur le codage dun programme distant (ici en Java via JDBC) et une autre utilisant le PL-SQL (et les triggers), lextension Oracle de SQL. Le TP est organis de la manire suivante : - La section 2 pose le contexte applicatif du problme trait, il sagit de rpondre des requtes dductives. - la section 3 est consacre la mise en uvre et la comparaison des deux solutions proposes. Chaque tudiant dispose de sa propre base EMP-DEPT sur le serveur Oracle.

2 Position du problme
On cherche trouver tous les suprieurs hirarchiques de tous les employs. Exprimer en SQL les deux requtes suivantes : trouver les couples (nom demploy N, nom du suprieur hirarchique N+1) trouver les couples (nom demploy N, nom du suprieur hirarchique N+2)
1

Philippe Picouet - LUSSI - ENST Bretagne

On peut donc, en SQL, obtenir tous les suprieurs hirarchiques un niveau fix. Ainsi, il savre que si le graphe reprsentant les liens hirarchiques immdiats (N, N+1) a un diamtre connu, alors il suffit, pour trouver tous les suprieurs hirarchiques, de faire un nombre de jointures gal au diamtre de ce graphe.

3 JDBC et PLSQL
Supposons maintenant que lon veuille crire un programme qui calcule les couples (employ, suprieur hirarchique de niveau quelconque). Il est dlicat, au moment o lon crit le programme, de supposer un nombre limite de niveaux hirarchiques dans la base (si lhypothse ne vous parat pas choquante pour les suprieurs hirarchiques, imaginez si vous souhaitiez faire le mme type dopration sur un graphe reprsentant un rseau routier ou de tlcoms). Dans la suite de ce TP, nous vous prsentons deux solutions alternatives pour obtenir ce type dinformation. Vous devrez examiner chacune des solutions proposes et les analyser.

3.1 Solution base exclusivement sur JDBC


Vous trouverez sous http://perso.enst-bretagne.fr/philippe.picouet/sgbd/jdbc/ft_graphes/ un programme Java qui renvoie, pour un numro demploy existant dans EMP, la liste des employs quil dirige, mme plusieurs niveaux hirarchiques dcart. Examinez et testez ce programme (voir le fichier Alire.txt situ la mme adresse) en modifiant ventuellement la relation EMP.

3.2 Solution base exclusivement sur PL-SQL


La solution dveloppe ici consiste utiliser un programme PL-SQL qui calcule une relation management contenant tous les couples (employs /suprieurs hirarchiques). PL-SQL est un langage de programmation intgr Oracle. Pour que la relation management soit toujours cohrente avec la relation emp partir de laquelle elle est calcule, un trigger (ou dclencheur en franais) recalcule la relation management chaque mise jour de la relation emp . Excutez le script : http://perso.enst-bretagne.fr/philippe.picouet/sgbd/oracle/deduction/management.sql crer la table management, la procdure MNGT et le trigger trig_emp.

pour

Cherchez les infrieurs hirarchiques dun employ et vrifiez la cohrence des rsultats avec la solution base de JDBC. Vrifiez le comportement du trigger en mettant jour la relation EMP. Ecrivez, compilez et excutez un programme Java qui interroge la relation management et qui renvoie, pour un numro demploy donn, la liste des employs quil dirige.

3.3 Synthse
Discutez les avantages et inconvnients des deux approches dcrites ci-dessus en terme de performances.

Modifiez la deuxime solution pour rpondre la mme requte en ordonnant les employs en fonction de leur niveau hirarchique. Que pensez vous de la mme modification pour la solution Java ?

Philippe Picouet - LUSSI - ENST Bretagne