Vous êtes sur la page 1sur 11

FEDERATION EUROPEENNE DES ECOLES

FEDERATION FOR EDUCATION IN EUROPE


OING dotée du statut participatif auprès du Conseil de l’Europe
INGO enjoying participatory status with the Council of Europe

UE D - TECHNIQUES PROFESSIONNELLES

Bachelor européen en informatique et réseaux

UC D31a - Développement et bases de données

Corrigé

Type d’épreuve : Rédaction (Etude de cas)

Durée : 4 heures

Session : Juin 2018

© Fédération Européenne Des Ecoles - Federation for EDucation in Europe - Juin 2018
UC D31a Développement et bases de données - Corrigé
 Dossier 1 - Spécification du projet en UML

Question 1
Décrivez ces cas d'exécution au moyen de diagrammes de séquence.

16 points (8 points par diagramme)

Appel cabine du palier

: BoutonPalier : : SGA : Ascenseur : Cabine


: Utilisateur CommandePalier

1: appuyer( ) 2: appuyer(int) 3: traitement( ) 4: allerA(int) 5: plusMoinsUn(int)

7: traitement( ) 6: etatAvancement( )

8: arret( )

9: acquittement( )

10: acquittement( )

tant que l'etage Quand l'etage est


demande est atteint l'ascenseur
different de l'etage donne l'ordre a la
atteint, on boucle. cabine de s'arreter

© Fédération Européenne Des Ecoles - Federation for EDucation in Europe - Juin 2018 2/11
UC D31a Développement et bases de données - Corrigé
Déplacement à l’étage sélectionné

: : : SGA : Ascenseur : Cabine


: Utilisateur BoutonCabineEtage CommandeCabine

1: appuyer( ) 2: appuyer(int)
3: descendreEtage(int)

4: monteeEtage(int)

5: allerA(int) 6: plusMoinsUn(int)

8: traitement( ) 7: acquittement( )

9: arret( )

10: acquittement( )

11: acquittement( )

tant que l'etage Quand l'etage est


demande est atteint l'ascenseur
different de l'etage donne l'ordre a la
atteint, on boucle. cabine de s'arreter

© Fédération Européenne Des Ecoles - Federation for EDucation in Europe - Juin 2018 3/11
UC D31a Développement et bases de données - Corrigé
Question 2
Décrivez ces cas d'exécution au moyen de diagrammes de collaboration.

16 points (8 points par diagramme)

Appel cabine du palier

1: appuyer( ) 2: appuyer(int)
: : CommandePalier
BoutonPalier
: Utilisateur

3: traitement( )

6: etatAvancement( ) 7: traitement( )
9: acquittement( ) 10: acquittement( )
: Cabine : Ascenseur : SGA

5: plusMoinsUn(int) 4: allerA(int)
8: arret( )

Déplacement à l’étage sélectionné

1: appuyer( ) 2: appuyer(int)
: BoutonCabineEtage :
CommandeCabine
: Utilisateur

3: descendreEtage(int)
4: monteeEtage(int)

7: acquittement( ) 8: traitement( )
10: acquittement( ) 11: acquittement( )
: Cabine : Ascenseur : SGA

6: plusMoinsUn(int) 5: allerA(int)
9: arret( )

© Fédération Européenne Des Ecoles - Federation for EDucation in Europe - Juin 2018 4/11
UC D31a Développement et bases de données - Corrigé
Question 3
Décrivez un cas d'exécution d’appel d’urgence au moyen d’un diagramme de collaboration.

13 points

1: appuyerBoutonAlerte( ) 2: Commande( )
: BoutonCabineAlerte :
CommandeCabine

: Utilisateur

3: traitement( )

: SGA

4: Alerte( )
: Administrateur

5: allerA(int)
8: acquittement( )

7: acquittement( )
: Cabine : Ascenseur

6: plusMoinsUn(int)

 Dossier 2 - Bases de données

Sous dossier 1 : Oracle SQL

Question 1
Ecrivez une requête qui baisse de 10 % le salaire des SALESMAN (SALESMAN est une fonction)
mais qui augmente leur commission de 100 €.

3 points

UPDATE Employe
SET salaire=salaire*0.9, commission=commission+100
WHERE Fonction='SALESMAN';

© Fédération Européenne Des Ecoles - Federation for EDucation in Europe - Juin 2018 5/11
UC D31a Développement et bases de données - Corrigé
Question 2
Ecrivez une requête qui ajoute la particule ‘de’ aux noms des employés de grade 4 et 5 (par
exemple : ‘Sertine’ devient ‘de Sertine’).

3 points

UPDATE Employe
SET Nom_Emp=concat('de ', Nom_Emp)
WHERE Grade=4 or Grade=5;

Question 3
Ecrivez une requête qui déplace dans le département 40 tous les employés qui ont au moins un
« A » dans leur nom.

3 points

UPDATE Employe
SET Date_Entree =CURDATE(), Num_Dep =40
WHERE Nom_Emp LIKE '%A%';

Question 4
Expliquez d’une phrase simple ce que fait la requête suivante :
UPDATE Employe x, Employe y
SET x.salaire = x.salaire+100
WHERE x.Responsable = y. id_Emp
AND y. Nom_Emp = 'de KING';

3 points

Elle augmente de 100 € le salaire des employés dont le nom du responsable est ‘de KING’.

Question 5
Ecrivez une requête qui déplace le département 40 à DALLAS (localisation) puis augmente de
100 € la commission de tous les employés qui travaillent à DALLAS.

3 points

UPDATE Departement
SET Localisation = 'DALLAS'
WHERE Num_Dep = 40;

UPDATE Employe
SET Commission =100+IFNULL(Commission, 0)
WHERE Num_Dep IN ( SELECT Num_Dep
FROM Departement
WHERE Localisation = 'DALLAS');

© Fédération Européenne Des Ecoles - Federation for EDucation in Europe - Juin 2018 6/11
UC D31a Développement et bases de données - Corrigé
Question 6
Ecrivez une requête qui modifie la fonction des employés qui sont subordonnées directs
d’employés travaillant à New York. Ils seront désormais « Technicien hors classe ».

3 points

UPDATE Employe x, Employe y


SET x.job = 'TECHNICIEN HORS CLASSE'
WHERE x.Responsable = y.Num_Emp
AND y.Num_Dep IN ( SELECT Num_Dep
FROM Departement
WHERE Localisation='NEW YORK');

Question 7
Ecrivez la (ou les) requête(s) qui permet(tent) de créer une nouvelle table Rem_Annuelle
(Rémunération annuelle) qui contiendra trois champs : le numéro de l’employé, le nom de
l’employé et la somme des salaires et commissions d’une année pour chaque employé de
GESTEN.

3 points

CREATE TABLE Rem_Annuelle(numero INT(5), Nom char(25), Rem float);

INSERT INTO Rem_Annuelle (numero, Nom, Rem)


SELECT id_Emp, Nom_Emp, 12*salaire+IFNULL(commission, 0)
FROM Employe;

Question 8
Ecrivez la requête qui trouve le nombre total d’employés engagés par département entre 2002 et
2014.

3 points

Select Nom_Dep, count(*)


From Employe, Departement
Where Employe. Num_Dep = Departement.Num_Dep
and to_number(to_char(Date_Entree, ‘YYYY’)) between 2002 and 2014
group by Nom_Dep;

Question 9
Ecrivez la requête qui affiche le nom, le numéro, la fonction, le salaire et la catégorie de chaque
employé de l’entreprise GESTEN. Les salaires sont regroupés en catégories de la façon suivante : 1
pour les salaires dont le montant est entre 0 € à 2 500 € inclus, 2 pour les salaires dont le montant
est strictement supérieur à 2 500 €.

5 points

Select Nom_Emp, Id_Emp, Fonction, Salaire, DECODE(Sign(Salaire-2500), -1, 1, 0, 1, 1, 2, 3) as Catégorie


From Employe ;

© Fédération Européenne Des Ecoles - Federation for EDucation in Europe - Juin 2018 7/11
UC D31a Développement et bases de données - Corrigé
Question 10
Ecrivez la requête qui trouve le nom et le numéro des départements qui ont engagé au moins 4
employés dans un intervalle de 6 mois.

5 points

Select Nom_Dep, Num_Dep


From Departement d, Employe e1, Employe e2,
Where d.Num_Dep = e1.Num_Dep
And e1.Num_Dep = e2.Num_Dep
And Months_between(e1. Date_Entree, e2. Date_Entree) <=6
• Group by Nom_Dep, Num_Dep HAVING count(*) >= 4;

Sous dossier 2 : Oracle SQL orienté Objet et PLSQL

Question 11
Expliquez le script ci-dessous de gestion des téléphones des employés GESTEN :
CREATE TYPE telephone_elt_vry_type AS OBJECT
(numTel VARCHAR2(14))
CREATE TYPE telephone_vry_type AS VARRAY(3) OF telephone_elt_vry_type
CREATE TYPE client_type AS OBJECT
(num NUMBER(5), nom VARCHAR2(30), adresse VARCHAR2(30),
telephone_vry telephone_vry_type)
CREATE TABLE Client OF client_type
(CONSTRAINT pk_client PRIMARY KEY (num));

4 points

Création de type objet telephone_elt_vry_type


Création de type tableau d’objet telephone_vry_type
Création de type objet client_type
Création d’une table Client d’objet client_type

© Fédération Européenne Des Ecoles - Federation for EDucation in Europe - Juin 2018 8/11
UC D31a Développement et bases de données - Corrigé
Question 12
Expliquez (commentez) le code de la procédure stockée ci-dessous et donnez son rôle :
CREATE OR REPLACE PROCEDURE change_Portable (paramcli IN NUMBER, paramtel IN
VARCHAR2) IS
tableau_tel telephone_vry_type;
indice NUMBER;
BEGIN
SELECT telephone_vry INTO tableau_tel
FROM Client WHERE num = paramcli FOR UPDATE;
IF NOT tableau_tel.EXISTS(3) THEN
indice := 1;
WHILE (indice <= tableau_tel.LIMIT)
LOOP
IF NOT (tableau_tel.EXISTS(indice)) THEN
tableau_tel.EXTEND;
tableau_tel(indice) := telephone_elt_vry_type(NULL);
END IF;
indice := indice + 1;
END LOOP;
END IF;
tableau_tel(3).numTel := paramtel;
UPDATE Client SET telephone_vry = tableau_tel WHERE num = paramcli;
EXCEPTION
WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('Client inexistant');
END;

7 points

La procédure stockée change_Portable(paramcli IN NUMBER, paramtel IN VARCHAR2) permet d’affecter à


un client donné (premier paramètre) un nouveau numéro de portable (second paramètre).

 Dossier 3 - Service web et PHP

Question 1
Expliquez le principe de fonctionnement du protocole SOAP, comment s'intègre-t-il dans le
monde internet ?

4 points

SOAP est un protocole client-serveur avec invocation de méthodes à distance. Ces requêtes/réponses sont
codifiées en XML. C'est le protocole HTTP qui est utilisé pour le transport, cependant le client peut être soit
un navigateur (utilisation manuelle) soit une application (automatique).

© Fédération Européenne Des Ecoles - Federation for EDucation in Europe - Juin 2018 9/11
UC D31a Développement et bases de données - Corrigé
Question 2
Quels avantages et quels inconvénients voyez-vous à la réalisation de communications entre
programmes en utilisant le protocole http.

4 points

Avantages
L’utilisation de SOAP via HTTP facilite la communication et évite les problèmes de proxys et pare-feu puisque
ce dernier fonctionne à travers de nombreux proxys et firewalls sans avoir à modifier les règles de filtrage.

Inconvénients
Certaines balises spécifiques à SOAP ne vont pas être bien interprétées par tous les clients HTTP.
Exemple : certains clients ne sont pas capables de fournir une valeur d’entête HTTP nulle.
SOAP rend difficile, voire impossible, l'utilisation de l'infrastructure de mise en cache associée au protocole
HTTP : sauvegarde du résultat d’une opération chère en temps de calcul, afin de ne pas avoir à la ré-
effectuer à son appel suivant.
L’utilisation de SOAP via HTTP facilite la communication et évite les problèmes de proxys et pare-feu et
permet par conséquent de passer au travers des règles de sécurité de ces derniers et constituer un danger.

Question 3
Expliquez le rôle de chacune des fonctions suivantes :
- strtolower($debutVille),
- strlen($debutVille),
- stristr($debutVille, substr($name, $lenN, $len)).

6 points (2 points par fonction)

strtolower($debutVille) : convertit tous les caractères de la chaine donnée en paramètre debutVille en


minuscule.
strlen($debutVille) : retourne le nombre de caractères de la chaine donnée en paramètre debutVille.
stristr($debutVille, substr($name, $lenN, $len)) : cherche une première occurrence de la sous-chaîne
substr($name, $lenN, $len) dans la chaine donnée en paramètre debutVille. stristr() est la version insensible
à la casse de strstr().

Question 4
Expliquez l’action du code PHP de la figure 3.

6 points

Ce code permet de sélectionner les adresses des clients en comparant le début du mot tapé au clavier avec
les noms des villes où ils habitent.

© Fédération Européenne Des Ecoles - Federation for EDucation in Europe - Juin 2018 10/11
UC D31a Développement et bases de données - Corrigé
GRILLE DE NOTATION
- D31a Développement et bases de données -

NOM ET PRENOM DU CORRECTEUR___________________________________________________________

N° de candidat_________________

Dossier Note attribuée Observations obligatoires

Dossier 1 - Spécification du
/45
projet en UML

Dossier 2 - Bases de données /45

Dossier 3 - Service web et


/20
PHP

Présentation et orthographe /10


TOTAL /120

Appréciation générale :
________________________________________________________________________________________
________________________________________________________________________________________
________________________________________________________________________________________
________________________________________________________________________________________
________________________________________________________________________________________

Fait à _______________________________________ le ____________

Signature :

© Fédération Européenne Des Ecoles - Federation for EDucation in Europe - Juin 2018 11/11
UC D31a Développement et bases de données - Corrigé

Vous aimerez peut-être aussi