Vous êtes sur la page 1sur 6

Universit Bordeaux 1 Master dinformatique UE Bases de Donnes Sujet de lexamen du 17 septembre 2004 10h11h30 (sans documents) Les questions

ns prcdes de sont a priori plus difciles que les autres. Exercice A (SQL) Le schma relationnel suivant reprsente la gestion simplie de librairies de bande dessines (BD). BD(NumBD, NomAlbum, NBPages, Editeur NumDessinateur, NumScnariste) Auteur(NumAuteur, Prnom, Nom, Nationalit) Magasin(NumMag, NomMag, Adresse, Tlphone, NomResponsable) BDDansMagasin(NumBD, NumMagasin, NbBDDispo, PrixVente) (A.i) Donnez les noms des auteurs de bande dessines (en tant que scnariste ou dessinateur) qui sont responsables dun magasin.

select Auteur.Nom from Auteur, Magasin where Auteur.Nom = Magasin.NomResponsable

(A.ii) Donnez les noms des magasins dont le responsable est aussi un des auteurs dune des BD disponibles dans ce mme magasin.

select Magasin.Nom from Magasin, BD, Auteur, BDDansMagasin where Magasin.NomResponsable=Auteur.Nom and (BD.NumDessinateur=Auteur.NumAuteur or BD.NumScenariste=Auteur.NumAuteur) and BDDansMagasin.NumBD= BD.NumBD and BDDansMagasin.NbBDDispo>0

(A.iii) Donnez la liste des titres dalbums de BD disponibles dans les magasins, regroups par magasin.

select BD.NomAlbum from BD, BDDansMagasin where BD.NumBD = BDDansMagasin.NumBD and BDDansMagasin.NbBDDispo>0 group by NumMag

(A.iv) Donnez la liste des numros des magasins ayant le plus grand nombre dalbums de BD disponibles. [On expliquera sa rponse, et le sens de chaque sous-requte sil y en a.]

select T.NumMag from T as (select NumMag, sum(NBBDDispo) as Total from BDDansMagasin groupby NumMag) where T.Total >= all (select sum(NBBDDispo) from BDDansMagasin groupby NumMag) La sous requte: (select NumMag, sum(NBBDDispo) as Total from BDDansMagasin groupby NumMag) fabrique les couples N,T o T est le nombre dalbums disponibles dans le magasin numro NumMag. Ensuite on cherche les numros de magasins dont le nombres dalbums disponibles est suprieur ou gal tous ceux des autres magasins: on a donc la mme sous-requte que prcdemment dont on ne garde que le nombre dalbums disponibles.

(A.v) Donnez la liste des noms de magasins ayant le plus grand nombre de titres dalbums de BD disponibles. [On expliquera sa rponse, et le sens de chaque sous-requte sil y en a.] Cest un peu la mme chose, mais on ne compte que le nombre de titres disponibles, cest--dire de NumBD diffrents dans BDDansMagasin avec NbBDDispo>0, et on doit retrouver les noms des magasins la place du "select" le plus externe, on peut aussi utiliser "natural join". select NomMag from Magasin, U as (select T.NumMag from T as (select NumMag, count(distinct NbBDDispo) as NTitre from BDDansMagasin where NbBDDispo>0 groupby NumMag) where T.NTitre>= all (select count(distinct NBBDDispo) from BDDansMagasin where NbBDDispo>0 groupby NumMag) ) where Magasin.NumMag=U.NumMag

Exercice B (Algbre relationnelle) Donner des principes doptimisation des requtes comportant les oprateurs , , . A quoi sert cette optimisation des requtes? Quand est-elle utilise par le systme de gestion de bases de donnes? Expliquer par un exemple sa pertinence. [Sur environ une demi page.]

Pour plus de dtails, voir le cours. Une table ayant en gnral bien plus de ligne que de colonnes, il convient de faire en premier les slections, puis les projections, qui suppriment des colonnes, et cest en dernier, aprs que la taille des tables a t rduite autant que possible, que sont effectus les jointures et les produits ces dernires oprations multiplie le nombre de lignes des deux tables. Cette phase doptimisation intervient aprs la compilation des requtes SQL en algbre relationnelle et avant quelles ne soient excutes. 2

Exercice C (Algbre relationnelle) On dispose de deux relations R(A,B,C) et S(C,D,E). Pour chacune des requtes suivantes, donner une requte quivalente plus efcace, (C.i) E (R E (C (R) S) CE (S))

(C.ii) BDE (R BDE (BC R

S). S)

(C.iii) [D=3] (R R [D=3] (S)

S)

(C.iv) [C=2] (R [C=2] (R)

S) [C=2] (S)

(C.v) [B=1

AN D C=2] B,C,D (R

S)

AC [B=1

AN D C=2] (R)

CE [C=2] (S)

Exercice D (Algbre relationnelle) On rappelle qutant donnes deux relations, R(A1 ,...,Ap ,Ap+1 ,...,An ) (n attributs) et S(Ap+1 ,...,An ) (les np derniers attributs de R) la division de R par S est une relation dont les attributs sont A1 ,...,Ap et qui est dnie par: R S = {(a1 ,..,ap )|(ap+1 ,...,an ) S (a1 ,...,ap ,ap+1 ,...,an ) R} Dans les deux premires questions les relations sont des ensembles de n-uplets, et les oprations utilises sont celles de lalgbre relationnelle ensembliste. (D.i) Que vaut (T S) S? T

(D.ii) obtenue.

Exprimer la division laide du produit, de la projection et de la diffrence, en justiant la formule

Un classique! Soit R1p = A1 ,...,Ap (R) que vaut R1p S? Ce sont les n-uplets qui sont obtenus en prolongeant nimporte quel p-uplet constitu des p premiers lments dun n-uplet de R par tous les (n p)-uplets de S si ces p-premiers lments taient dans R S, tous les n-uplets ainsi obtenus seraient dans R. W = A1 ,...,Ap ((R1p S) R) contient donc tous les p-uplets qui sont dans R1p mais pas dans R S. Donc R S = R1p W 3

(D.iii) Cette dnition est-elle encore valable lorsquon fonctionne, comme SQL, avec des multiensembles et les oprations sur les multiensembles? Pourquoi? Et non, cause de la double diffrence! Il faut utiliser un oprateur qui limine les doublons.

Exercice E (Datalog) Le tramway fait des siennes. Une relation Acces(x,y,n,E), mise jour rgulirement, indique que la station y suit la station x sur la ligne n, et que le tramway est dans ltat E de x y: si E vaut 1 alors la ligne fonctionne de x y, et sinon la ligne ne fonctionne pas de x y. [On rpondra en datalog. On vriera la correction des clauses en particulier celle des clauses rcursives, et on expliquera la signication des relations auxiliaires utiliss.] (E.i) Quels sont les triplets (x,y,n) tels que la station y suit la station x sur la ligne n.

Suit(x,y,n):-Acces(x,y,n,_).

(E.ii) Quels sont les triplets (x,y,n) tels que la station y suit la station x sur la ligne n, et que le tramway fonctionne de x y.

Possible(x,y,n):-Acces(x,y,n,1).

(E.iii) Quels sont les couples de stations conscutives qui sont relies dans un sens et dans lautre par le tramway?

R1(x,y):-Possible(x,y,n) AND Possible(y,x,n).

(E.iv) Quels sont les couples (x,y) de stations tels que lon peut aller de x y en tramway en suivant la mme ligne?

S2(x,y,n) on peut aller de x y en suivant la ligne n. S2(x,y,n):-Possible(x,y,n). S2(x,y,n):-S2(x,z,n) AND Possible(z,y,n). La rponse: R2(x,y):-S2(x,y,_). Attention, dans S2 le numro de ligne est constant.

(E.v) Quels sont les couples (x,y) de stations tels que lon peut aller de x y en tramway, en changeant de ligne si besoin est?

R3(x,y):-Possible(x,y,_). R3(x,y):-R3(x,z) AND Possible(z,y,_)

(E.vi) Quels sont les couples de stations (x,y) tels que lon puisse aller en tramway de x y mais pas revenir en tramway de y x?

S4(x,y):- R3(x,y) AND NOT R3(y,x). Toute variable apparat dans un atome positif. Il y a une ngation mais pas de rcurrence. (E.vii) Un voyageur situ la station u veut bien faire en tout au plus une station de tramway pieds. A quelles stations peut-il accder?

R5(u). R5(x):-R3(u,x). R5(x):-R3(u,z) AND Suit(z,w,_) AND R3(w,x). R5(x):-Suit(z,w,_) AND R3(w,x). R5(x):-R3(u,z) AND Suit(z,w,_). R5(x):-Suit(u,x,_).

Exercice F (Conception de schmas relationnels) Donner un exemple de schma relationnel qui soit en 3NF mais pas en BCNF. On expliquera pourquoi il est en 3NF et pas en BCNF, et en quoi cela peut poser problme. [Sur environ une demi page.] Un exemple classique est Ville, Code postal, Rue avec les dpendances V,R C C V (la dpendance C V fonctionne avec les villes comme Paris, Lyon, Marseille o le code postal dtermine la commune). Les clefs sont V R et RC. Le schma est en 3NF: tous ces attributs sont premiers (appartiennent une clef minimale) et donc chaque partie droite dune dpendance est un attribut premiers. Par contre il nest pas BCNF puisque C V sans que C contienne une clef. Le problme quon rencontre est une redondance de linformation: si un n-uplet est (v,r1,c) et un autre (?,r2,c) alors, cause de C V on sait que "?" vaut v, cest donc une information redondante quon ne peut pas factoriser.

Exercice G (Conception de schmas relationnels) On considre le schma relationnel suivant, Cours, Prof, Heure, Salle, Etudiant, Note dont les dpendances fonctionnelles sont Cours Prof Heure Salle Cours Heure Prof Salle Cours Etudiant Note Heure Etudiant Salle (G.i) Mettre ce schma en BCNF on expliquera lalgorithme utilis.

Corrig disponible part sur le web.

(G.ii) La dcomposition obtenue prserve-t-elle les dpendances fonctionnelles? Pourquoi? Idem.

(G.iii) La dcomposition obtenue est elle sans perte par jointure? Pourquoi? [Rappel: Soit I un ensemble ni dattributs, soit Jk des sous-ensembles de I pour 1 k K. Soit R un schma relationnel sur I. La k=K dcomposition de R(I) en (Rk )1kK est dite sans perte par jointure si et seulement si k=1 Jk (R) = R. ] Oui, ce genre de dcomposition est toujours sans perte par jointure. A chaque fois que lon fractionne un schma T en XA et T A on a X A, il ny a donc pas de perte par jointure (thorme de Heath ou vrication par lalgorithme matriciel).