• Aucun résultat trouvé

select p.#projet from Projet p where p.localisation = 'Msila’ and not exists ( select * from Travaille t where p.#projet = t.#projet and t.fromDate =&gt

N/A
N/A
Protected

Academic year: 2022

Partager "select p.#projet from Projet p where p.localisation = 'Msila’ and not exists ( select * from Travaille t where p.#projet = t.#projet and t.fromDate =&gt"

Copied!
3
0
0

Texte intégral

(1)

Université de M’sila Année Universitaire : 2009/2010 Faculté des sciences de l’ingénieur 30 Mai 2010 durée : 1h et 30

Spécialité : Master1 Module : BDDA

Corrigé-type Questions de cours ( 5 pts) : consultez le support de cours.

Exercice 1 :base de données temporelles( 5pts):

1- Donner le nom, prénom et adresse des employés qui dirigent actuellement un projet qui est actif et dont la fin du projet arrive avant le 31 décembre 2010.

select nom, prénom, adresse from Employé e, Dirige d, Projet p where e.#employé = d.#employé and d.#projet = p.#projet

and p.fromDate <= sysdate and sysdate < p.toDate and p.toDate < 31-12-2010;

2- Donner les numéros des projets localisés à M’sila tels que tous les employés qui y ont travaillé pendant l'année 2006 le faisaient à 100%.

select p.#projet from Projet p

where p.localisation = 'Msila’ and not exists

( select * from Travaille t where p.#projet = t.#projet and t.fromDate =>

1/1/2006 and 1/1/2007 > t.toDate and t.pourcentage <> 100 );

3- Donner le numéro 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 T1.toDate < T2.fromDate and T1.pourcentage > T2.pourcentage ) Exercice 2 :base de données Active( 5pts):

1- vérifier que le labo d’un projet existe bien.

CREATE TRIGGER verification

AFTER INSERT OR UPDATE OF numlabo ON Labo-projet FOR EACH ROW WHEN (new.numlabo is not null)

DECLARE num integer;

BEGIN num:=0;

SELECT numlabo INTO num

FROM laboratoire

WHERE numlabo=:new.numlabo;

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 (new.numprojet is not null) DECLARE

num integer;

BEGIN num:=0;

SELECT numprof INTO num FROM projet

WHERE numprojet=:new.numprojet;

(2)

IF num= 0 then raise_application_error(-20501, ‘ce projet n’existe pas’) ELSE

IF (num<>:new.numprof) THEN raise_application_error(-20501, ‘ce doctorant doit travailler dans le meme projet de son encadreur’);

END IF; ENDIF;

END;

3- La somme des coûts des projets d’un labo ne dépasse pas le budget de ce dernier.

CREATE TRIGGER budget

BEFORE INSERT OR UPDATE OF projet ON labo-projet FOR EACH ROW WHEN (new.numprojet is not null) DECLARE

Somme, lbudget float;

BEGIN

SELECT sum (P.cout * LP.pourcentage) INTO somme FROM projet P , labo-projet LP

WHERE P.numprojet= LP.numprojet and P.numprojet=: new.numprojet and LP.numlabo=:new.labo;

SELECT budget into lbudget FROM laboratoire L where L. numlabo= :new.numlabo;

IF somme> lbudget then raise_application_error(-20501, ‘le budget est dépassé’);

END IF;

END;

Exercice3 : Base de données Objet ( 5pts) :

1-Donner le schéma de classes ODMG correspond au schéma relationnel ci-dessus Class Professeur Extent Les professeurs Key numprof

{ Attribute numprof : Int ; Attribute noms : String ;

Relationship encadrer : List doctorant Inverse doctorant.encadreur ; Relationship diriger : List projet Inverse projet.directeur ;

Relationship participer : laboratoire Inverse laboratoire.membre ; Relationship chef : laboratoire Inverse laboratoire.superviseur ; } }

Class doctorant Extent Lesdoctorants Key NumEt { Attribute NumEt: Int ;

Attribute Nom : String ;

Relationship encadreur : professeursInverse Professeur.encadrer ; Relationship participant : projet Inverse projet.membredoc ; }

Class laboratoire Extent Les laboratoires Key numlabo { Attribute numlabo : Int ;

Attribute nomlabo : String ; Attribute budget : float ;

Relationship membre : List professeur Inverse professeur.participer ; Relationship superviseur : professeur Inverse professeur.chef ; Relationship realiser : List labo-projet Inverse labo-projet .labo ; } Class projet Extent Lesprojets Key numprojet

{ Attribute numprojet : Int ; Attribute titre : String ; Attribute coût : float ;

Relationship participe : List labo-projet Inverse l labo-projet .prj ;

(3)

Relationship membredoc : professeur Inverse doctorant.participant ; Relationship directeur : professeur Inverse professeur.diriger ; }

Class labo-projet Extent Lesprojets-labs { Attribute pourcentage : INT ;

Relationship labo : laboratoire Inverse labo.realiser ; Relationship prj : projet Inverse projet.participe ;}

2.a-Donnez les titres de projets réalisés par le laboratoire ‘XXX’.

SELECT LP.Prj.titre

FROM LP in LesProjets-Labs Where LP.Labo.nomlabo=’XXX’;

2.b-Donnez les professeurs qui ne supervisent que les projets réalisés 100 % par son laboratoire .

b.1- SELECT P.directeur FROM P in Projet

WHERE for all x in P.Participe:

X.pourcentage = 100 and X.labo=P.directeur.labo;

ou

b.2-SELECT P.directeur FROM P in Projet

WHERE not exist ( select X from X in lesprojets-abs where X.prj=p and X.labo<>

P.directeur.labo);

Références

Documents relatifs

• En marge de recul, elles sont autorisés sur la ligne latérale ou en respectant les mêmes restrictions de hauteur que les clôtures lorsqu’elles sont

Encadrement : l’ingénieur-e sera encadré.e par Pascale EZAN, Pierre DÉCHELOTTE et Patrice COHEN (lien fonctionnel avec Mathilde LE LUYER et placé sous la

Il implique le futur enseignant dans une analyse des pratiques professionnelles qui nous permettra, nous formateurs, d’identifier ses compétences à analyser un problème, à

• Les membres de Debian (mainteneurs) sont des volontaires motivés par le logiciel libre.. • Le Contrat

Le remplacement de l’habilitation des formations par un système d’accréditation encore très flou, sans que soit prévue une régulation nationale forte, la fusion du CS et du CEVU

Pour cela dans la fonction buttonEnvoyer_Click, rajouter du code permettant de récupérer le texte de la TextBox d’émission pour le placer dans la TextBox de réception, précédé

Commencer par les créer dans les répertoires Source Files pour &#34;IO.c&#34; et Header Files pour &#34;IO.h&#34; , puis remplacer leur contenu par le contenu téléchargé depuis la

Après avoir cliqué sur le bouton &#34;Réponse&#34;, il voit s'afficher le personnage le plus proche des critères cochés.. Le joueur choisi un des