100% ont trouvé ce document utile (2 votes)
325 vues3 pages

CorrigéType

Transféré par

Ismail Ħm
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (2 votes)
325 vues3 pages

CorrigéType

Transféré par

Ismail Ħm
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Universit de Msila Anne Universitaire : 2009/2010

Facult des sciences de lingnieur 30 Mai 2010 dure : 1h et 30


Spcialit : Master1 Module : BDDA
Corrig-type
Questions de cours ( 5 pts) : consultez le support de cours.
Exercice 1 :base de donnes temporelles( 5pts):
1- Donner le nom, prnom et adresse des employs qui dirigent actuellement un projet
qui est actif et dont la fin du projet arrive avant le 31 dcembre 2010.
select nom, prnom, adresse from Employ e, Dirige d, Projet p
where e.#employ = d.#employ and d.#projet = p.#projet
and [Link] <= sysdate and sysdate < [Link] and [Link] < 31-12-2010;

2- Donner les numros des projets localiss Msila tels que tous les employs qui y ont
travaill pendant l'anne 2006 le faisaient 100%.
select p.#projet
from Projet p
where [Link] = 'Msila and not exists
( select * from Travaille t where p.#projet = t.#projet and [Link] =>
1/1/2006 and 1/1/2007 > [Link] and [Link] <> 100 );

3- Donner le numro des projets dans lesquels chaque employ qui y a travaill n'a
jamais diminu son pourcentage.
select #projet
from Projet P
where not exists
( select * from Travaille T1, Travaille T2 where T1.#employ= T2.#employ
and T1.#projet = P.#projet and T2.#projet = P.#projet
and [Link] < [Link] and [Link] > [Link] )
Exercice 2 :base de donnes Active( 5pts):
1- vrifier que le labo dun projet existe bien.
CREATE TRIGGER verification
AFTER INSERT OR UPDATE OF numlabo ON Labo-projet
FOR EACH ROW WHEN ([Link] is not null)
DECLARE
num integer;
BEGIN
num:=0;
SELECT numlabo
INTO num
FROM laboratoire
WHERE numlabo=:[Link];
IF (num=0)
THEN raise_application_error(-20501, 'N de labo inexistant');
END IF; END;
2- un doctorant doit travailler dans un projet dirig par son encadreur.
CREATE TRIGGER doct-project
AFTER INSERT OR UPDATE OF projet ON doctorant
FOR EACH ROW WHEN ([Link] is not null)
DECLARE
num integer;
BEGIN
num:=0;
SELECT numprof INTO num
FROM projet
WHERE numprojet=:[Link];
IF num= 0 then raise_application_error(-20501, ce projet nexiste pas)
ELSE
IF (num<>:[Link]) THEN raise_application_error(-20501, ce doctorant doit
travailler dans le meme projet de son encadreur);
END IF; ENDIF;
END;
3- La somme des cots des projets dun labo ne dpasse pas le budget de ce dernier.
CREATE TRIGGER budget
BEFORE INSERT OR UPDATE OF projet ON labo-projet
FOR EACH ROW WHEN ([Link] is not null)
DECLARE
Somme, lbudget float;
BEGIN
SELECT sum ([Link] * [Link]) INTO somme
FROM projet P , labo-projet LP
WHERE [Link]= [Link] and [Link]=: [Link] and
[Link]=:[Link];
SELECT budget into lbudget FROM laboratoire L where L. numlabo= :[Link];
IF somme> lbudget then raise_application_error(-20501, le budget est dpass);
END IF;
END;
Exercice3 : Base de donnes Objet ( 5pts) :
1-Donner le schma de classes ODMG correspond au schma relationnel ci-dessus

Class Professeur Extent Les professeurs Key numprof
{ Attribute numprof : Int ;
Attribute noms : String ;
Relationship encadrer : List doctorant Inverse [Link] ;
Relationship diriger : List projet Inverse [Link] ;
Relationship participer : laboratoire Inverse [Link] ;
Relationship chef : laboratoire Inverse [Link] ; }
}

Class doctorant Extent Lesdoctorants Key NumEt
{ Attribute NumEt: Int ;
Attribute Nom : String ;
Relationship encadreur : professeursInverse [Link] ;
Relationship participant : projet Inverse [Link] ; }

Class laboratoire Extent Les laboratoires Key numlabo
{ Attribute numlabo : Int ;
Attribute nomlabo : String ;
Attribute budget : float ;
Relationship membre : List professeur Inverse [Link] ;
Relationship superviseur : professeur Inverse [Link] ;
Relationship realiser : List labo-projet Inverse labo-projet .labo ; }
Class projet Extent Lesprojets Key numprojet
{ Attribute numprojet : Int ;
Attribute titre : String ;
Attribute cot : float ;
Relationship participe : List labo-projet Inverse l labo-projet .prj ;
Relationship membredoc : professeur Inverse [Link] ;
Relationship directeur : professeur Inverse [Link] ; }

Class labo-projet Extent Lesprojets-labs
{ Attribute pourcentage : INT ;
Relationship labo : laboratoire Inverse [Link] ;
Relationship prj : projet Inverse [Link] ;}
2.a-Donnez les titres de projets raliss par le laboratoire XXX.
SELECT [Link]
FROM LP in LesProjets-Labs
Where [Link]=XXX;
2.b-Donnez les professeurs qui ne supervisent que les projets raliss 100 % par son
laboratoire .

b.1- SELECT [Link]
FROM P in Projet
WHERE for all x in [Link]:
[Link] = 100 and [Link]=[Link];
ou
b.2-SELECT [Link]
FROM P in Projet
WHERE not exist ( select X from X in lesprojets-abs where [Link]=p and [Link]<>
[Link]);

Vous aimerez peut-être aussi