1 PL/SQL
Transcription
1 PL/SQL
Universite Louis Pasteur M1 IFA Annee 2007/08 TD2 Base de Donnees Avancee 1 PL/SQL 1.1 Exercice 1 On souhaite appliquer une regle d'echantillonage a la table E M P (E mpno; E name:::). Ecrire un programme PL/SQL permettant de lire la table EMP et d'acher les noms des employes dont les rangs d'apparition dans la table sont : 1; 3; 6; 10; 15:::. Regle de calcul des rangs successifs : 1=0+1 3=1+2 6=3+3 10 = 6 + 4 15 = 10 + 5 (1) ::: Indication : Utiliser un parcours personnalise de curseur dans lequel n 1 n uplets sont lus avant d'acher un nom d'employe (n = 1; 2; 3:::;c'est le nombre en italiques dans la regle de calcul des rangs.) 1.2 Exercice 2 Soit le schema relationnel suivant : ETUDIANT (nume, nom, prenom) NOTATION (nume, , notecc, noteexam) codemat MATIERE (codemat, coecc, coefexam) On souhaite gerer les resultats d'examens d'une faculte. Il s'agit de denir un programme PL/SQL permettant l'insertion automatique d'informations dans les relations "resultats" RESULTAT et CLASSEMENT, a partir des donnees des relations "sources" ETUDIANT, NOTATION et MATIERE, qui contiennent respectivement des renseignements sur les etudiants, les notes obtenues par les etudiants et les coecients aectes aux matieres. Pour denir ce programme, suivre les etapes suivantes : 1 1. Denir en SQL la structure des relations RESULTAT et CLASSEMENT : { la relation RESULTAT a pour attributs un numero d'etudiant, un nom d'etudiant, un code matiere, ainsi qu'un attribut note globale pour cet etudiant ; { la relation CLASSEMENT a pour attributs un numero d'etudiant, un nom d'etudiant, une moyenne generale et un rang. Ne pas inclure de contrainte d'integrite dans la denition de ces deux relations, qui sont temporaires et ne servent qu'au stockage des resultats. 2. Denir un bloc PL/SQL anonyme permettant d'inserer dans RESULTAT tous les n-uplets constitues du numero d'un etudiant, de son nom, du code d'une matiere, et de la note obtenue par cet etudiant dans cette matiere. Le calcul de cette note doit tenir compte des coecients de contr^ole continu et d'examen denis pour la matiere en question, ainsi que la possibilite d'avoir des valeurs nulles pour les notes des etudiants, qui sont alors assimilees a 0 (utiliser la fonction N V L). Les n-uplets consideres doivent ^etre extraits des tables ETUDIANT, NOTATION et MATIERE de maniere iterative, gr^ace a un curseur adapte. 3. Terminer le traitement en realisant l'insertion dans la relation CLASSEMENT des n-uplets constitues du numero d'un etudiant, de son nom, son prenom, de la moyenne generale obtenue dans toutes les matieres par cet etudiant (ces informations doivent ^etre extraites de la table RESULTAT) et de son rang, qui doit ^etre calcule. Utiliser un curseur dans lequel les enregistrements sont tries. 2 Triggers 2.1 Exercice 3 Soit la table CLIENT (NumCli, Nom, Prenom, DateNaiss, Rue, CP, Ville). Tester la cle primaire sur la table CLIENT. 2.2 Exercice 4 Soit une table quelconque TABL, dont la cle primaire CLENUM est numerique. Denir un trigger en insertion permettant d'implementer une numerotation automatique de la cle. Le premier numero doit ^etre 1. 2.3 Exercice 5 Soit le schema relationnel d'une agence bancaire regionale. CLIENT (NUMCL, NOM, PRENOM, ADR, CP, VILLE, SALAIRE, CONJOINT ) DETENTEUR (NUMCL, ) NUMCP COMPTE (NUMCP, DATEOUVR, SOLDE) { Attributs soulignes : Cles primaires { Attributs en italique : Cles etrangeres { NUMCL et CONJOINT sont denis sur le m^eme domaine. Ecrire un trigger en insertion permettant de contr^oler les contraintes suivantes : { Le departement dans lequel habite le client doit ^etre 01; 07; 26; 38; 42; 69; 73 ou 74, { Le nom du conjoint doit ^etre le m^eme que celui du client 2