Vous êtes sur la page 1sur 2

Université Cergy-Pontoise 12/01/2018

Master Informatique M1

Bases de Données Avancées


Examen

Exercice 1 (7 pts)
Un système de surveillance de la température des bâtiments utilise une base de données relationnelle
pour stocker les informations sur les capteurs implantés dans les bâtiments et sur les mesures
recueillies. Elle a le schéma suivant, où les clés sont soulignées et les clés étrangères sont en italique :
Capteur (cid, type, bâtiment, position, description)
Mesure (valeur, date, heure, cid)
Un capteur est décrit par un identifiant (cid), un type de capteur, le bâtiment où il est placé, la position
dans le bâtiment et une description. Chaque mesure de température indique la valeur mesurée, le
moment de la mesure et le capteur qui produit cette mesure.
La base contient 10 000 capteurs et 500 000 mesures enregistrées. La taille des champs (en octets) est :
cid(10), type(20), bâtiment(30), position(40), description(100), valeur(10), date(10), heure(10). Une
page disque a une taille utile de 4000 octets. Une adresse physique sur disque (ROWID) occupe 10
octets. Une lecture/écriture de page prend en moyenne 1 ms pour une lecture séquentielle et 5 ms pour
une lecture directe (par ROWID).
a) Ecrivez la requête SQL qui demande la valeur mesurée, le bâtiment et le cid pour toutes les
mesures de température de moins de 16°.
Pour la suite, on considère qu’il y a environ 0,4% de mesures de moins de 16° et que le nombre de
mesures par capteur est similaire pour tous les capteurs.
b) Donner le plan d’exécution sans index, utilisant la jointure par tri-fusion avec M=11 pages de
mémoire utilisées pour le tri. Calculer le temps d’exécution de ce plan.
c) En supposant qu’il existe un index sur Mesure.valeur et un autre sur Capteur.cid (tous les deux
arbres B+ à 3 niveaux), donnez le plan d’exécution qui correspond à l’utilisation de ces deux index
et calculez son temps d’exécution.
d) Même chose pour le plan d’exécution qui utilise un index sur Mesure.valeur et un autre sur
Mesure.cid (également arbre B+ à 3 niveaux).

Exercice 2 (3,5 pts)


a) On considère une exécution concurrente déjà sérialisable. Est-ce qu’un ordonnanceur avec
verrouillage à deux phases peut ne pas accepter l’exécution telle quelle et modifier l’ordre des
opérations ? Justifiez votre réponse.
b) On considère plusieurs types d’organisation physique possibles pour une table R, sur laquelle on
fait une recherche par clé unique c : (i) organisation séquentielle, (ii) hachage sur c, (iii) utilisation
d’un index dense (arbre B+) sur c et (iv) utilisation d’un index clustérisé, donc non dense, sur c
(également arbre B+). On considère que l’organisation de la table a lieu lorsque celle-ci a une
taille donnée, ensuite on insère de nouvelles lignes dans la table jusqu’à ce que R double de taille.
De combien de fois augmente le temps de recherche quand R double de taille, dans chacun de cas
d’organisation physique ? On suppose que les index n’augmentent pas le nombre de niveaux et
que la répartition des clés reste uniforme lors de l’insertion de nouvelles lignes.
Exercice 3 (4,5 pts)
Soit l’exécution concurrente suivante :
H : l1[x] l2[y] e1[x] l3[y] l2[x] e3[y] l2[z] c1 l3[z] e2[z] e3[z] c2 c3
a) Donnez tous les conflits de l’exécution H et vérifiez si elle est sérialisable en construisant son
graphe de sérialisation.
b) Enumérez toutes les lectures sales et les écritures sales de H. Dans quelle catégorie par rapport aux
annulations se trouve H : stricte, sans annulations, recouvrable ou non-recouvrable?
c) Quelle est l’exécution obtenue à partir de H par verrouillage à deux phases simple? On suppose les
verrous d’une transaction relâchés à la fin de celle-ci et à ce moment on donne priorité aux
opérations en attente de verrou (dans l’ordre de leur blocage).

Exercice 4 (3 points)
Donner une représentation du type d'objet multipolygone. Un polygone est défini comme un ensemble
ordonné (liste) de points, représentant les sommets du polygone et délimitant les différents segments
de ligne. Ainsi, pour définir le type d'objet multipolygone, vous devez définir tout d’abord le type
d’objet point et le type d’objet polygone.
Un objet polygone est composé des éléments suivants :
- une table ou un tableau de points qui représentent les sommets du polygone
- un identifiant de polygone (integer), un nom de polygone (varchar) et une couleur de polygone
(varchar) comme attributs
Un objet multipolygone est composé des éléments suivants :
- une table ou un tableau de polygones qui font partie du multipolygone
- un identifiant de multipolygone (integer), un nom de multipolygone (varchar) et un entier
indiquant si le polygone est interne ou externe (integer, par exemple -1 et 1) comme attributs
Inclure une méthode qui retourne le nombre de polygones du multipolygone.

Figure 1 : Un exemple de multipolygone des trois polygones (deux externes et un interne)

Exercice 5 (2 points)
a) Les deux tables suivantes ont déjà été créées et remplies dans Oracle Spatial :
CREATE TABLE GEOD_CITIES(
LOCATION SDO_GEOMETRY, /* geometrie */
CITY VARCHAR2(42), /* nom ville */
COUNTRY VARCHAR2(50), /* pays */
POP90 NUMBER); /* population */

CREATE TABLE GEOD_AUTOROUTE(


AUTOROUTE VARCHAR2(35), /* nom d’autoroute */
GEOM SDO_GEOMETRY); /* geometrie */

Insérer un exemple d'objet dans la table GEOD_CITIES et un dans la table GEOD_AUTOROUTE

b) Ecrire la requête pour trouver toutes les villes à moins de 10 km d'une autoroute (par exemple
Autoroute A15). Indication : utilisez sdo_within_distance()