I N S T I T U T
S U P E R I E U R
INFORMATIQUE
ةـيــملاـعلإل يـلاـعلا دـهعمـلا
ISI
Année Universitaire 2020-2021
Mastère professionnel en logiciels libres - M1
Bases de données Avancées – Activité 3.1
R. ZAAFRANI, 19/10/2020
On souhaite mettre en œuvre le schéma conceptuel UML ci-dessous, représentant la gestion (simplifiée) du
planning des salles de l'institut, en utilisant les fonctionnalités orientées objets de SQL3.
PLANNING
Jour : VARCHAR(10)
Heure_debut : NUMBER(4,1)
Heure_fin : Number(4,1)
SALLE
Numero : VARCHAR(20)
Videoprojecteur: CHAR(1)
*
ENSEIGNEMENT
Code : VARCHAR(20)
Effectif: NUMBER(3)
Videoprojecteur : CHAR(1)
*
SALLE_Cours
Capacite : NUMBER(3)
Retroprojecteur: CHAR(1)
Micro : CHAR(1)
SALLE_INFO
Nb_ordinateurs : NUMBER(2)
OS : VARCHAR(20)
CM
Retroprojecteur: CHAR(1)
TD
Sur_machine : CHAR(1)
Classes
l. Créer les classes figurant sur le diagramme UML ci-dessus (sauf PLANNING) en tenant compte des liens
Publicité
d'héritage entre elles.
NB: SALLE est une classe abstraite qui n'aura aucune instance, tandis qu'ENSEIGNEMENT pourra en avoir.
Convention de nommage des types : Suffixer le nom de la classe par _t (ex. Salle_t).
2. Matérialiser la classe-association PLANNING sous forme d'un type Planning_t incluant en plus des attributs
mentionnés dans le diagramme de classes deux attributs références de salle et d'enseignement, respectivement.
Tables objets
Créer trois tables objets afin de stocker les données relatives à la gestion du planning:
Salle (stockage des instances des types Salle_t, Salle_cours_t et Salle_info_t);
Enseignement (stockage des instances des types Enseignement_t, CM_t et TD_t) ;
Planning (stockage des instances du type Planning_t).
Ne pas oublier d'assurer l'intégrité référentielle (références de Planning). Est-il possible de définir une clé
primaire sur des références?
=> Définir un déclencheur prenant en charge la contrainte de clé primaire sur la table Planning.
Instances : Insérer les n-uplets suivants dans les tables respectives :
Salles de cours
Numéro
Grand amphi
A1
A2
Vidéoprojecteur
O
N
N
capacité Rétroprojecteur Micro
O
N
O
400
80
50
O
N
N
Bases de données Avancées – Activité 3.1
1
Numéro
I1
Publicité
I2
Salles informatiques
Vidéoprojecteur Nb_ordinateurs
O
N
15
15
OS
Windows
Windows/Linux
Code
S0INFO
Enseignements
Effectif Vidéoprojecteur
350
O
Code
S1BDPROGCM
S2BDACM
Code
S1BDPROGTD1
S1BDPROGTD2
S2BDATD
Cours magistraux (CM)
Effectif Vidéoprojecteur Rétroprojecteur
50
25
O
O
N
N
Travaux dirigés (TD)
Effectif Vidéoprojecteur
50
25
25
O
Publicité
N
N
Sur_machine
N
O
N
Ref_salle
A1
A2
A1
Grand amphi
A1
I2
I2
Requêtes
Ref_ens
S1BDPROGCM
S2BDACM
S2BDACM
S0INFO
Planning
Jour
Mardi
Mercredi
Mercredi
Lundi
S1BDPROGTD1 Mardi
S1BDPROGTD2 Mardi
Jeudi
S2BDATD
Heure_début Heure_fin
8
8
9,5
15
9,5
15
Publicité
9,5
9,5
9,5
11
16,5
11
16,5
11
1. Liste de toutes les salles. Est-ce qu’un SELECT * fonctionne ?
2. Liste de tous les enseignements. Est-ce qu’un SELECT * fonctionne ?
3. État « brut » du planning. Est-ce qu’un SELECT * fonctionne ? Pourquoi ?
4. Planning des salles : code d’enseignement, numéro de salle, jour, heure de début et heure de fin de
l’enseignement (jointure implicite).
5. Code d’enseignement et numéro de salle pour les enseignements nécessitant un vidéoprojecteur et affectés à
une salle qui n’en dispose pas.
6. Nombre d’enseignements différents par salle.
7. Numéros des salles qui ne figurent pas au planning (salles libres).
8. Numéros des salles de cours. Utiliser le pseudo-attribut OBJECT_VALUE et la fonction IS OF().
9. Numéros de salles et nombre d’ordinateurs des salles informatiques. Pour accéder aux attributs d’une sous-
classe, utiliser la fonction TREAT(), le pseudo-attribut OBJECT_VALUE et la notation pointée.
10. Numéros de salles et nombre d’ordinateurs de toutes les salles.
11. Code d’enseignement, besoin de rétroprojecteur (pour l’enseignement), numéro de salle et disponibilité du
rétroprojecteur (dans la salle) pour les cours magistraux se déroulant dans les salles de cours. Exploiter la
fonction DEREF() combinée aux fonctions TREAT() et IS OF().
Rappel :
-) Fonction TREAT : SELECT TREAT(Adr AS ADR_ETRANGER) FROM les_personnes;
-- Recherche sélective des adresses des personnes habitant à l'étranger
-) Fonction IS OF : Traite à un niveau de la hiérarchie les objets pour sélectionner que ceux des niveaux
inférieurs de la hiérarchie (la racine étant le niveau 0)
SELECT VALUE(p) FROM les_personnes p
WHERE p.Adr IS OF(ADR_ETRANGER);
-- Caractéristiques des personnes habitant à l'étranger
Bases de données Avancées – Activité 3.1
2