Académique Documents
Professionnel Documents
Culture Documents
ACTIVITES_PRATIQUEES CHARGE Le script SQL, généré automatiquement par un outil d’aide tel que PowerAMC Designer,
correspondant à ce schéma conceptuel est donné ci-dessous :
0,n
Les tables qui correspondent aux types d’entités dans le schéma conceptuel EA sont :
0,n
ACTIVITES PROFESSEURS
CREATE TABLE ELEVES
nom num_prof
( NUM_ELEVE NUMBER(6) NOT NULL,
niveau nom
NOM VARCHAR2(25) NOT NULL,
equipe specialite
date_entree PRENOM VARCHAR2(25) NOT NULL,
der_prom DATE_NAISSANCE DATE NOT NULL,
salaire_base POIDS NUMBER(5,2),
salaire_actuel ANNEE NUMBER(1),
CONSTRAINT PK_ELEVES PRIMARY KEY (NUM_ELEVE) );
Schéma Conceptuel de Données EA de la BD Ecole CREATE TABLE COURS
( NUM_COURS NUMBER(2) NOT NULL,
NOM VARCHAR2(20) NOT NULL,
1. Traduisez ce schéma conceptuel EA en diagramme de classes UML. NBHEURES NUMBER(2),
Entity Relationship Entity Relationship ANNEE NUMBER(1),
⇒ UML ⇒ UML
CONSTRAINT PK_COURS PRIMARY KEY (NUM_COURS) );
Entity Object Domain Domain constraint
Entity type Class Key Key constraint
CREATE TABLE PROFESSEURS
Relationship Object Constraint Constraint
( NUM_PROF NUMBER(4) NOT NULL,
Relationship type Class Cardinality Multiplicity/Cardinality
NOM VARCHAR2(25) NOT NULL,
Attribute/Property Property 0,1 1,1 0,n 1,n a,b a,a 0..1 1 0..* 1..* a..b a
SPECIALITE VARCHAR2(20),
Role / Label Role ER diagram UML Class diagram
DATE_ENTREE DATE,
Method
DER_PROM DATE,
Researcher Laboratory SALAIRE_BASE NUMBER(6,2),
Team
RNum Affected Belongs LNum SALAIRE_ACTUEL NUMBER(6,2),
TNum
RName 1,1 1,n TName 1,1 1,n LName CONSTRAINT PK_PROFESSEURS PRIMARY KEY (NUM_PROF) );
Speciality LUniversity
L’insertion des données se fera comme suit : SELECT ROUND(17.0958,1) "ROUND exemple" FROM DUAL;
INSERT INTO matable (attributs) VALUES (valeurs) ; SELECT ROUND(17.58,2) "ROUND exemple" FROM DUAL;
2.1. Modifier la structure de la table ELEVES. SELECT TRUNC(1958.0917,1) "TRUNC exemple" FROM DUAL;
SELECT TRUNC(1958.0917,2) "TRUNC exemple" FROM DUAL;
Ajoutez les attributs : SELECT ROUND(TO_DATE('17-SEP-2002'), 'YEAR') "New Year" FROM DUAL;
CodePostal de type numérique sur 5 positions, et
Ville de type caractère sur 20 positions SELECT EXTRACT(YEAR FROM SYSDATE) FROM DUAL;
SELECT ADD_MONTHS(SYSDATE,7) FROM DUAL;
2.2. Mettre à jour les adresses des ELEVES de N° 1, 2, 5 et 7 (respectivement) avec les
données suivantes : SELECT TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('19-JUN-2001'))) AS AGEBB FROM DUAL;
3/5 4/5
4. Répondre aux requêtes ci-dessous :
1- Obtenir la liste des nom, prénom et date de naissance de tous les élèves.
2- Obtenir tous les renseignements sur toutes les activités.
3- Obtenir la liste des spécialités des professeurs.
4- Obtenir le nom et prénom des élèves pesant moins de 45 kilos et inscrits en 1ère année ou des
élèves inscrits en 2ème année.
5- Obtenir le nom des élèves dont le poids est compris entre 60 et 80 kilos.
6- Obtenir le nom des élèves dont le nom commence par L.
7- Obtenir le nom des professeurs dont la spécialité est inconnue.
8- Obtenir, pour chaque professeur, son nom et sa spécialité. Si cette dernière est inconnue, on
souhaite afficher la chaîne de caractères : ‘****’.
9- Quels sont les noms et prénoms des élèves qui pratiquent du surf au niveau 1.
10- Obtenir les paires de noms de professeurs qui ont la même spécialité.
11- Afficher les points de Tsuno obtenus dans chaque cours sur 100 plutôt que sur 20.
12- Obtenir le poids moyen des élèves de 1ère année.
13- Obtenir le total des points de l’élève numéro 3.
14- Obtenir la plus petite et la plus grande note de l’élève Brisefer.
15- Obtenir le nombre d’élèves inscrits en deuxième année.
16- Afficher l’âge moyen des élèves. Cet âge moyen sera exprimé en année.
17- Obtenir une liste des élèves classés par année et par ordre alphabétique.
18- Obtenir pour chaque élève de 1ère année son nom et sa moyenne.
19- Obtenir la moyenne des points de chaque élève de 1ère année dont le total des points est
supérieur à 40.
20- Quels sont les élèves de 1ère année dont la moyenne est supérieure à la moyenne de la 1ère
année ?
21- Obtenir le nom et le poids des élèves de 1ère année plus lourds que n’importe quel élève de 2ème
année.
22- Obtenir le nom et le poids des élèves de 1ère année plus lourds qu’un élève quelconque de 2ème
année.
23- Obtenir le nom, le poids et l’année des élèves dont le poids est supérieur au poids moyen des
élèves étant dans la même année d’études.
24- Obtenir le nom des professeurs qui ne donnent pas le cours numéro 1.
25- Obtenir le nom des élèves de 1ère année qui ont obtenu plus de 60 % et qui jouent au tennis.
26- Professeurs qui prennent en charge TOUS les cours de deuxième année ; on demande le
Numéro et le nom (Opération de Division).
TTITLE ' Profs prenant en charges TOUS les cours de 2 Années '
SELECT NUM_PROF, NOM
FROM PROFESSEURS
WHERE NOT EXISTS
(SELECT * FROM COURS WHERE ANNEE = 2
AND NOT EXISTS
(SELECT * FROM CHARGE
WHERE PROFESSEURS.NUM_PROF = CHARGE.NUM_PROF
AND CHARGE.NUM_COURS = COURS.NUM_COURS));
27- Elèves qui pratiquent TOUTES les activités ; on demande le Numéro et le nom.
5. Les vues :
La création d’objets Vues sous SQL se fait par la commande :
CREATE VIEW <nomvue> [(col_alias[col_alias] ...)] as SQL_QUERY;
5.1- Créer la vue ElevesAnnee1 contenant la liste des élèves de 1ère année.
5.2- Donner le classement des élèves de 1ère année par ordre de mérite
5.3- Donner la liste des activités pratiquées que par des élèves de 1ère année
5/5