Sunteți pe pagina 1din 4

Module ABD Dimanche 27/05/2018

Exercice 1 (12 pts)


Considérons la base de données dont le schéma et l'extension sont donnés ci-dessous :
EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO*)
DEPT (DEPTNO, DNAME, LOC)
EMP
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
7369 SMITH CLERK 7902 17-12-1980 800,00 20
7499 ALLEN SALESMAN 7698 20-02-1981 1600,00 300,00 30
7521 WARD SALESMAN 7698 22-02-1981 1250,00 500,00 30
7566 JONES MANAGER 7839 02-04-1981 2975,00 20
7654 MARTIN SALESMAN 7698 28-09-1981 1250,00 1400,00 30
7698 BLAKE MANAGER 7839 01-05-1981 2850,00 30
7782 CLARK MANAGER 7839 09-06-1981 2450,00 10
7788 SCOTT ANALYST 7566 19-04-1987 3000,00 20
7839 KING PRESIDENT 17-11-1981 5000,00 10
7844 TURNER SALESMAN 7698 08-09-1981 1500,00 800,00 30
7876 ADAMS CLERK 7788 23-05-1987 1100,00 20
7900 JAMES CLERK 7698 03-12-1981 950,00 30
7902 FORD ANALYST 7566 03-12-1981 3000,00 20
7934 MILLER CLERK 7782 23-01-1982 1300,00 10

DEPT
DEPTNO DNAME LOC
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON

)Partie 1- Mise à jour de la base de données (6 pts)


1) Changer la localisation (LOC) du département ACCOUNTING de
NEWYORK à PALOALTO.
2) Dans EMP, augmenter de 10 % le salaire (SAL) des SALESMAN dont la
commission (COMM) est supérieure à 50 % du salaire.
3) Dans EMP, attribuer aux employés en poste avant le 01/01/1980
(HIREDATE) et ayant une commission non spécifiée (NULL) une
commission égale à la moyenne des commissions.
4) Annuler les trois mises à jour précédentes.

Réponses :
R1. (1.5 pt) update DEPT set LOC = ‘PALOALTO’ where
DNAME=’NEWYORK’;
R2. (1.5 pt) update EMP set SAL=SAL*1.10 where JOB=’SALESMAN’ and
COMM > SAL*0.50
R3. (1.5 pt) update EMP set COMM=(select avg(COMM) from EMP) where
HIREDATE <’01/01/80’ and COMM is null;
R4. (1.5 pt) rollback;
Partie 2 - Interrogation de la base de données (6 pts)

Exprimer en SQL Oracle les requêtes suivantes :


1) Nom (ENAME), salaire (SAL), commission (COMM), salaire+commission de
tous les SALESMAN.
2) Nom des SALESMAN par ordre décroissant de la commission et salaire.
3) Nom des SALESMAN dont la commission est inférieur à 25% de leur salaire.
4) Nombre d'employés du département n° 10.
5) Nombre d'employés ayant une commission.
6) Nombre de fonctions (JOB) différentes.
7) Salaire moyen par fonction (sans tenir compte des commissions).
8) Total des salaires du département RESEARCH.
9) Nom des employés avec le nom de leur département.
10) Nom, fonction et salaire de l'employé ayant le salaire le plus élevé.
11) Nom des employés gagnant plus que ‘SCOTT’.
12) Créer une vue sécurisée donnant la liste des employés sans salaire et
commission
Réponses :
R1. (0.5 pt) select ENAME,JOB, SAL,COMM,SAL+COMM from EMP where
JOB=’ SALESMAN’;
R2. (0.5 pt) select ENAME,JOB, SAL+COMM from EMP where JOB=’
SALESMAN’ order by SAL+COMM desc;
R3. (0.5 pt) select ENAME,SAL,COMM from EMP where JOB=’ SALESMAN’
and COMM < SAL* 0.25;
R4. (0.5 pt) select count(*) from EMP where DEPTNO=10;
R5. (0.5 pt) select count(*) from EMP where COMM is not null;
R6. (0.5 pt) select JOB, count(*) from EMP group by JOB; les fonctions
différentes : select distinct JOB from EMP;
R7. (0.5 pt) select JOB, avgt(SAL) from EMP group by JOB;
R8. (0.5 pt) select sum(SAL) from EMP where DEPTNO=(select DEPTNO
from DEPT where DNAME=’RESEARCH’;
R9. (0.5 pt) select ENAME,DNAME from EMP, DEPT where
EMP.DEPTNO=DEPT.DEPTNO;
R10. (0.5 pt) select ENAME,JOB,SAL from EMP where SAL = (select
max(SAL) from EMP);
R11. (0.5 pt) select ENAME,SAL+COMM from EMP where
(SAL+COMM) > (select SAL+COMM from EMP where
ENAME=’SCOTT’);
R12. (0.5 pt) create or replace view EMPS as select
EMPNO,ENAME,JOB,MGR, HIREDATE,DEPTNO from EMP;

Exercice 2 - Normalisation (5 pts)


Soit la relation suivante décrivant un employé travaillant sur un projet d’un laboratoire :
Employé ( NoEmp, NoLab, NoProj, NomEmp, NomProj, adresse) avec les dépendances
fonctionnelles suivantes:
(NoEmp, NoLab)  NoProj
NoEmp NomEmp
NoEmp  adresse
NoProj  NomProj
Questions :
a) identifier les redondances éventuelles dans sa population,
b) établir le (un) graphe minimum de ses dépendances,
c) définir son (ses) identifiant(s),
d) définir sa forme normale et la justifier, et si nécessaire, proposer une décomposition
optimale.
Réponses
a) Redondance sur les attributs NomEmp, adresse et NomProj (0.5 pt)
b) Graphe de dfs min (1.5 pt)
NoEmp NoLab

NomEmp adresse NoProj

NomProj
c) Identifiant : (NoEmp + NoLab) (1pt)
d) La relation est en 1FN mais non en 2FN (0.5 pt)
- les attributs NomEmp, adresse dépendent d’une partie de la clé NoEmp
- les attributs NomProj dépend d’un attribut non clé NoProj
Décomposition (relations en 3FN) (1.5 pt)
Employé (NoEmp, NomEmp, adresse)
Projet (NoProj, NomProj)
ELP (NoEmp*, NoLab, NoPo*j)

Exercice 3- schéma relationnel (3 pts)


On considère la base de données MICRO qui assure la gestion simplifiée des ventes d’un
magasin de micro-informatique définies par les trois relations (CLIENT, PRODUIT et
VENTE) décrites ci-dessous :
 La relation CLIENT donne en fonction d’un numéro du client (noClient), son nom
(nomCl), son prénom (prenomCl) et sa ville de résidence (villeCl). Le numéro de
client permet d’identifier de manière unique un client du magasin.
 La relation PRODUIT donne en fonction d’un numéro de produit (noProduit), son
nom (nomPr), sa marque(marquePr), son prix unitaire HT (puPR), ainsi que la
quantité disponible en stock (qtePr). Le numéro de produit permet d’identifier de
manière unique un produit commercialisé dans le magasin.
 La relation VENTE contient les quantités de produits vendus aux clients (qteVte).
Une vente est identifiée de manière unique par le triplet (noClient, noProduit,
dateVte) où dateVte est la date de vente.
Questions :
1. Donner le schéma relationnel de cette base de données. N’oublier pas de souligner la
clé primaire de chaque relation.
2. Citer les clés étrangères figurant dans ce schéma relationnel ? une clé étrangère
peut-elle prendre la valeur NULL ? Justifier votre réponse.
3. Ecrire une requête SQL qui permet de donner le nom du produit le plus cher

Réponses :
1. Le schéma relationnel de la base de données MICRO : (1 pts)
CLIENT (noClient,nomCl, prenomCl, villeCl)
PRODUIT (noProduit, nomPr, marquePr , puPr, qtePr)
VENTE (noClient*, noProduit*, dateVte, qteVte)

2. Les clés étrangères sont des clés primaires dans d’autres relations, elles permettent
de réaliser l’intégrité référentielle, les clés étrangères dans ce schéma sont
marquées par un astérisque (*)
Les clés étrangères dans ce schéma sont : noClient et noProduit de la relation
VENTE.
(0.5 pt)
Une clé étrangère peut prendre la valeur NULL si elle ne fait partie de la clé
primaire, et si la contrainte d’intégrité référentielle est désactivée par le SGBD.
Dans la relation VENTE, les clés étrangères font parties des la clé primaire et ne
peuvent pas être NULL même si la contrainte d’intégrité référentielle est désactivée
par le SGBD. (0.5 pt)
3. Le nom du produit le plus cher :
select nomPr from PRODUIT where puPr = (select max(puPr) from
PRODUIT);
(1 pt)