Vous êtes sur la page 1sur 5

Correction sujet juin 2005

Correction sujet juin 2004 Partie III


Matriel Nsrie <pi> N5 <O> AdresseIP VA20 Modle VA20 Date_Acqui D Prix_Acqui N9,3 Date_Mtce D Marque VA20 Identifiant_1 <pi> Heritage_1 Bureau 1,1 Install dans 0,n <pi> N3 <O> Nbureau Nbatiment N3 Identifiant_1 <pi>

Priphrique Type_priph VA20

Ordinateur Taux_amort N3,2 Cout_Unit N6 Capacit N4 0,n

Logiciel CodeLog <pi> VA5 <O> Nlicence N20 NomLog VA30 Nversion N4 Identifiant_1 <pi>

utiliser 0,n

0,n Utiliser Ordinateur Dure utilisation N4 0,n Projet Codeproj <pi> VA4 <O> Nomproj VA30 Dureeproj N3 Cout_est N9,3 Identifiant_1 <pi> 0,n Compos de 1,1 0,n Equipe Matricule <pi> VA5 <O> Identifiant_1 <pi> 0,n Drige par 1,1 0,n DATE date <pi> D <O> Identifiant_1 <pi> 0,n 0,n Compose de 0,n Date fin participation D Employ <pi> VA8 <O> Ncin Nom VA25 Prnom VA10 Fonction VA20 Identifiant_1 <pi>

Question III.l : a) Pour lhritage Matriel, Priphrique et Ordinateur, il sagit dune spcialisation (seule lentit mre possde une proprit identifiante (Nsrie). 1. Premire possibilit de traduction des entits Matriel, Priphrique et Ordinateur : Matriel (NSERIE, ADRESSEIP, MODELE, DATE_ACQUI, PRIX_ACQUI, DATE_MTCE, MARQUE, NBUREAU ) PERIPHERIQUE (NSERIE#, TYPE_PERIPH) ORDINATEUR (NSERIE#, TAUX_AMORT, COUT_UNIT ,CAPACITE,) Remarque : Le champ NSERIE des tables Priphrique et Ordinateur rfrence le champ cl primaire NSERIE de la table Matriel.

Nadhem Bel Hadj OCA DBA

Nadhemb@yahoo.com

Correction sujet juin 2005

2. Deuxime possibilit de traduction des entits Matriel, Priphrique et Ordinateur : Matriel (NSERIE, NBUREAU ) PERIPHERIQUE (NSERIE#, ADRESSEIP, MODELE, DATE_ACQUI, PRIX_ACQUI, DATE_MTCE, MARQUE TYPE_PERIPH) ORDINATEUR (NSERIE#, TAUX_AMORT, COUT_UNIT, CAPACITE, ADRESSEIP, MODELE, DATE_ACQUI, PRIX_ACQUI, DATE_MTCE, MARQUE TYPE_PERIPH)

La solution optimale :
Par soucis doptimisation, on limine la table Matriel et ajoute le champ NBUREAU aux deux tables Priphrique et Ordinateur. PERIPHERIQUE (NSERIE, ADRESSEIP, MODELE, DATE_ACQUI, PRIX_ACQUI, DATE_MTCE, MARQUE TYPE_PERIPH, NBUREAU) ORDINATEUR (NSERIE, TAUX_AMORT, COUT_UNIT, CAPACITE, ADRESSEIP, MODELE, DATE_ACQUI, PRIX_ACQUI, DATE_MTCE, MARQUE TYPE_PERIPH, NBUREAU) b) Le MLD PERIPHERIQUE (NSERIE, ADRESSEIP, MODELE, DATE_ACQUI, PRIX_ACQUI, DATE_MTCE, MARQUE TYPE_PERIPH, NBUREAU) ORDINATEUR (NSERIE, TAUX_AMORT, COUT_UNIT, CAPACITE, ADRESSEIP, MODELE, DATE_ACQUI, PRIX_ACQUI, DATE_MTCE, MARQUE, NBUREAU) BUREAU (NBUREAU, NBATIMENT) COMPOSEE_DE (Date_Dbut, NCIN, MATRICULE, DATE_FIN_PARTICIPATION) EMPLOYE (NCIN, NOM, PRENOM, FONCTION) EQUIPE (MATRICULE, CODEPROJ, NCIN_Chef) LOGICIEL (CODELOG, NLICENCE, NOMLOG, NVERSION) PROJET ( CODEPROJ, NOMPROJ, DUREEPROJ, COUT_EST) UTILISER_LOGICEL (NSERIE, CODELOG) UTILISER_ORDINATEUR (NSERIE, NCIN, CODEPROJ, Date_Utilisation DUREE_UTILISATION) Question III.2 : SQL a) create table EMPLOYE ( NCIN VARCHAR2(8) , NOM VARCHAR2(25) NOT NULL, PRENOM VARCHAR2(10) NOT NULL, FONCTION VARCHAR2(20) NOT NULL, constraint PK_EMPLOYE primary key (NCIN) );

Nadhem Bel Hadj OCA DBA

Nadhemb@yahoo.com

Correction sujet juin 2005

create table ORDINATEUR ( NSERIE NUMBER(5) , NBUREAU NUMBER(3), ADRESSEIP VARCHAR2(20), MODELE VARCHAR2(20), DATE_ACQUI DATE, PRIX_ACQUI NUMBER(9,3), DATE_MTCE DATE, MARQUE VARCHAR2(20), TAUX_AMORT NUMBER(3,2) default 0 , COUT_UNIT NUMBER(6), CAPACITE NUMBER(4), constraint PK_ORDINATEUR primary key (NSERIE), constraint FK_ORDINATEUR_INSTALLE__BUREAU foreign key (NBUREAU) references BUREAU (NBUREAU) ); b) Select NSERIE From Utiliser_Ordinateur UO, Projet Pr, Equipe Eq Where UO.Codeproj = Pr.CodeProj And Eq.CodeProj = Pr.CodeProj And Pr.NomProj= 'Gestion d''une clinique' And Matricule = 'E123' ; c) Premire mthode select NCIN from employe where NCIN NOT IN (select NCIN from UTILISER_ORDINATEUR where to_char(date_dbut,YYYY)=2003); Deuxime mthode select NCIN from employe E where NOT EXISTS (select NCIN from UTILISER_ORDINATEUR UO where to_char(date_dbut,YYYY)=2003 and UO.NCIN = E.NCIN ); d) select CodeProj from Utiliser_Ordinateur UO, Ordinateur O, Bureau B where UO.NSERIE = O.NSERIE and O.NBUREAU = B.NBUREAU and B.NBATIMENT = 5 group by CodeProj Having sum(DUREE_UTILISATION) >= 120;

Nadhem Bel Hadj OCA DBA

Nadhemb@yahoo.com

Correction sujet juin 2005

e) Select NCIN From employe MINUS ( ( select NCIN From Composee_De CD, Equipe Eq, Projet Pr Where CD.Matricule = Eq.Matricule And Eq.CodeProj=Pr.CodeProj And Pr.NomProj=Gestion dune clinique) UNION ( select NCIN_Chef From Equipe Eq, Projet Pr Where Eq.CodeProj=Pr.CodeProj And Pr.NomProj=Gestion dune clinique) ) Question III.3 : PL/SOL a) Create or replace Function Taux_Amort (NS Ordinateur.NSERIE%type) Return Number Is CU Ordinateur.COUT_UNIT%type ; -- Cot Unitaire dutilisation PA Ordinateur.PRIX_ACQUI%type ; -- Prix dacquisition de lordinateur DTU Number; --Dure totale dutilisation Begin Select COUT_UNIT, PRIX_ACQUI INTO CU, PA From Ordinateur Where NSERIE=NS ; Select sum(Duree_Utilisation) Into DTU From Utiliser_Ordinateur Where NSERIE = NS; Return (DTU*CU/PA); End Taux_Amort; b) Create or replace Function Ecart_Est (NP Projet.NomProj%type) Return Number IS CTP Number; -- cot total dun projet CEP Number; -- cot Estim dun projet Begin Select cout_est into CEP From Projet Where NomProj=NP; Select sum (Duree_Utilisation*O.Cout_Unit) INTO CTP

Nadhem Bel Hadj OCA DBA

Nadhemb@yahoo.com

Correction sujet juin 2005

From Utiliser_Ordinateur UO, Ordinateur O, Projet Pr Where UO.NSERIE=O.NSERIE And UO.CodeProj=Pr.CodeProj And Pr.NomProj=NP; Return (CTP/ CEP)*100; End Ecart_Est; c) Create or Replace Trigger MAJ_TX_AMORT AFTER INSERT ON Utiliser_Ordinateur FOR EACH ROW DECLARE Cout_Tot Number ; PA Ordinateur.PRIX_ACQUI%type; PU Ordinateur.COUT_UNIT%type; BEGIN Select prix_Acqui,Cout_Unit into PA,PU From Ordinateur Where NSERIE = :NEW.NSERIE; Update Ordinateur set Taux_Amort=Taux_Amort + ( (:NEW.Duree_Utilisation*PU)/PA) Where NSERIE= :NEW.NSERIE ; END MAJ_TX_AMORT;

Nadhem Bel Hadj OCA DBA

Nadhemb@yahoo.com

Vous aimerez peut-être aussi