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