Sie sind auf Seite 1von 2

Université Cergy-Pontoise 19/01/2016

Master Informatique M1

Bases de Données Avancées


Examen

Exercice 1 (7,5 pts)


Le système d’information d’un supermarché utilise une base de données relationnelle pour stocker les
informations sur les produits en rayon et les transactions d’achat des clients. Elle a le schéma suivant,
où les clés sont soulignées et les clés étrangères sont en italique :
Produit (pid, nom, prix, unité, description)
Transaction (tid, date, client, vendeur)
Achat (pid, tid, quantité)
Une transaction représente un achat de plusieurs produits par un client, la table Achat contenant les
produits achetés lors des transactions. La base contient 10 000 produits, 100 000 transactions et en
moyenne 16 produits par transaction. La taille des champs (en octets) est : pid(10), nom(50), prix(15),
unité(5), description(120), tid(10), date(10), client(40), vendeur(40), quantité(5).
Une page disque a une taille utile de 4000 octets et une adresse physique sur disque 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.
a) Ecrivez la requête SQL qui demande l’identifiant des transactions où on a acheté des produits
coûtant au moins 100 euros, ainsi que le nom et le prix du produit en question.
b) Donner le plan d’exécution sans index, utilisant la jointure par tri-fusion. Quel est le temps
d’exécution de ce plan lorsqu’on utilise M = 11 pages de mémoire pour le tri ? On considère
qu’environ 2% des produits coûtent 100 euros ou plus.
c) On considère qu’il existe un index sur Achat.pid (arbre B+ à 3 niveaux). Donner le plan
d’exécution qui utilise cet index et calculer le temps d’exécution de ce plan. On considère qu’un
produit coutant 100 euros ou plus apparait en moyenne dans 20 transactions.
d) Donner juste le plan d’exécution (sans calculer le temps d’exécution) qui utiliserait des index sur
Produit.pid et Produit.prix.
e) Considérons maintenant une extension de la requête du point (a), qui demande les clients qui ont
acheté des produits coûtant au moins 100 euros, ainsi que le nom et le prix du produit en question.
Dans les conditions du point (c), en plus de l’index sur Achat.pid, il existe aussi un index sur
Transaction.tid. Donner le plan d’exécution qui étend le plan d’exécution du point (c), en utilisant
le second index. Calculer le temps d’exécution de ce plan en fonction du temps d’exécution
calculé au point (c).

Exercice 2 (5,5 pts)


Soit l’exécution concurrente suivante :
H : l1[x] l2[y] l3[y] l1[y] e2[z] e3[x] l1[z] l2[x] c1 e3[y] c3 c2
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).
d) On considère l’exécution H’ obtenue de H en se limitant aux opérations des transactions T1 et T2.
On considère que x, y et z sont les lignes d’une table R et on remplace dans H’ les trois lectures
dans T1 par une seule lecture de R, ce qui produit l’exécution H". Ecrire H’ et H" et donner
l’exécution de H" par verrouillage à deux phases hiérarchique.

Exercice 3 (3 points)
Supposons que les données de l’exercice 2 sont stockées dans deux fichiers XML, Produit.xml et
Transaction.xml, ayant respectivement les structures suivantes :
Produit.xml Transaction.xml
<produits> <transactions>
<produit pid="a13c-b12f"> <transaction tid ="1">
<nom>Skip</nom> <date>2014-09-01</date>
<prix>10,20</prix> <client>Vodislav</client>
<unité>piece</unité> <vendeur>Vendeur1</vendeur >
<description>...</description> <produit pid="a13c-b12f">
</utilisateur> <quantité>10</quantité>
<produit pid="p11p-b12f"> </produit>
<nom>tomate</nom> <produit pid="p11p-b12f">
<prix>1,20</prix> <quantité>10</quantité>
<unité>kilo</unité> </produit>
<description>...</description> </transaction>
</utilisateur> <transaction tid ="2">
<produit pid="p11p-dq1q"> <date>2015-11-01</date>
<nom>oignon</nom> <client>Kotzinos</client>
<prix>1,20</prix> <vendeur>Vendeur2</vendeur>
<unité>kilo</unité> <produit pid="p11p-dq1q">
<description>...</description> <quantité>100</quantité>
</utilisateur> </produit>
... <produit pid="p11p-b12f">
</produits> <quantité>110</quantité>
</produit>
</ transaction>
...
</transactions>

Exprimez les requêtes suivantes en XQUERY:


a) Trouver tous les produits qui coûtent plus de 1,20 et sont vendus par «Vendeur2». Retourner des
éléments XML avec vendeur comme attribut et le nom et le prix du produit comme contenu.
Indication : utiliser la fonction number() qui retourne la valeur numérique d'un texte.
b) Trouver le nom et la quantité pour les produits achetés par «Kotzinos». Retourner des éléments
XML contenant le nom du client comme attribut et le nom et la quantité du produit comme sous-
éléments.
Indication : utiliser la fonction data(attribute) pour obtenir la valeur d’un attribut.

Exercice 4 (3 points)
Donner une représentation objet (commandes create type / create table) des produits et des
transactions, dans laquelle les objets transaction contiennent des ensembles (tables) d’objets produit.
Inclure une méthode qui retourne le nombre de produits dans une transaction.
Indication : créer une table de produits à l’intérieur de chaque objet transaction. Pour chaque produit
dans chaque transaction conserver des informations comme le nom, le prix, l'unité, la description.
Exprimer la requête suivante sur la représentation objet ainsi définie : trouver l’identifiant de
transaction, le client et le nombre de produits achetés dans chaque transaction du client «Vodislav».

Exercice 5 (1 point)
Quelles sont les (trois) différences entre les opérateurs spatiaux et les fonctions spatiales d’Oracle ?

Das könnte Ihnen auch gefallen