Loading ...
Global Do...
News & Politics
0
0
Try Now
Log In
Pricing
Université Bordeaux 1 — Master d’informatique UE Bases de Données INF 305 (Retoré) Devoir surveillé du Jeudi 17 mars, 8h–9h30 + une solution possible On considère la base ”avions” maintes fois vue en TD: PILOTE (NUMPIL, NOMPIL, ADR, SAL) AVION (NUMAV, NOMAV, CAPACITE, LOC) VOL (NUMVOL, NUMPIL, NUMAV, VILLE_DEP, VILLE_ARR, H_DEP, H_ARR) NUMPIL: clé de PILOTE, nombre entier NOMPIL: nom du pilote, chaı̂ne de caractères ADR: ville de la résidence du pilote, chaı̂ne de caractères SAL: salaire du pilote, nombre entier NUMAV: clé de AVION, nombre entier CAPACITE: nombre de place d’un avion, nombre entier LOC: ville de l’aéroport d’attache de l’avion, chaı̂ne de caractères NUMVOL: clé de VOL, nombre entier VILLE_DEP: ville de départ du vol, chaı̂ne de caractères VILLE_ARR: ville d’arrivée du vol, chaı̂ne de caractères H_DEP: heure de départ du vol, nombre entier entre 0 et 23 H_ARR: heure d’arrivée du vol, nombre entier entre 0 et 23 Exercice A Contraintes en algèbre relationnelle/schéma (A.i) Exprimer la contrainte suivante en algèbre relationnelle: Tout pilote conduisant un vol figure dans la table PILOTE. πNUMPILPILOT E \πNUMPILVOL = /0 (A.ii) Donner la définition de Les attributs NOMPIL et ADR constituent une clé de la relation PILOTE. Si les attributs NOMPIL et ADR sont égaux pour deux n-uplets de PILOTE alors tous leurs attributs sont égaux. (A.iii) Exprimer la contrainte précédente en algèbre relationnelle. σNUMPIL 6=NUMPILbis OR SAL 6=SALbis(PILOT E ./ ρNUMPIL→NUMPILbis,SAL→SALbisPILOT E) 1 Exercice B Requêtes en algèbre relationnelle Exprimer les requêtes suivantes dans l’algèbre relationnelle: (B.i) Quels sont les pilotes gagnant moins de 20000? σSAL≤20000PILOT E (B.ii) Quels sont les pilotes conduisant au moins un vol au départ de ’Bordeaux’? πNUMPIL,NOMPILσV ILLE DEP=′Bordeaux′(PILOT E ./VOL) (B.iii) Quels sont les pilotes conduisant un vol au départ de chez eux avec un avion localisé dans leur ville? πNUMPIL,NOMPIL(PILOT E ./ ρV ILLE DEP→ADRVOL ./ ρLOC→ADRAV ION) (B.iv) Quels sont les pilotes conduisant des avions de plus de 300 places? πNUMPIL,NOMPILσCAP≥300(PILOT E ./VOL ./ AV ION) (B.v) Quels sont les pilotes ne conduisant que des avions de plus de 300 places? πNUMPIL,NOMPILPILOT E \πNUMPIL,NOMPILσCAP<300(PILOT E ./VOL ./ AV ION) 2 Exercice C Datalog Exprimer en Datalog les requêtes suivantes. (C.i) Quels sont les avions de plus de 300 places et localisés à ’Bordeaux’? Ci(n,a):-AVION(n,a,c,’Bordeaux’) AND c>=300. (C.ii) Quels sont les numéros et noms d’avions dont le nom n’est ni Airbus ni Boeing? Cii(n,a):-AVION(n,a,c,l) AND a<> ’Boeing’ AND a<>’Airbus’. (C.iii) Quels sont les pilotes conduisant un vol au départ de chez eux? Ciii(p,x):-PILOTE(p,x,v,_) AND VOL(_,p,_,v,_,_,_). (C.iv) Quels sont les avions conduits par un pilote dont le nom est ’Martin’ ou ’Durand’? MouD(u):-PILOTE(u,’Martin’,_,_). MouD(u):-PILOTE(u,’Durand’,_,_). Civ(n,a):-MouD(u) AND VOL(_,u,n,_,_,_,_) AND AVION(n,a,_,_). (C.v) Quels sont les villes atteignables depuis ’Bordeaux’ directement? Cv(v):-VOL(_,_,_,’Bordeaux’,v,_,_). (C.vi) Quelles sont les villes atteignables depuis ’Bordeaux’ avec correspondance? Réponse pour ceux qui ont compris ”avec éventuellement une ou plusieurs correspondances”: Att(x,y):-VOL(_,_,_,x,y,_,_). Att(x,y):-VOL(_,_,_,x,z,_,_) AND Att(z,y). Cvi(v):-Att(’Bordeaux,v). (C.vii) Quelles sont les villes atteignable depuis ’Bordeaux’ avec correspondance en ne volant jamais avec un ’Tupolev’? SST(x,y):-VOL(_,n,_,x,y,_,_) AND AVION(n,a,c,l) AND a<>’Tupolev’. AttSST(x,y):-SST(x,y). AttSST(x,y):-SST(_,_,_,x,z,_,_) AND AttSST(z,y). Cvii(v):-AttSST(’Bordeaux,v). (C.viii) Quels sont les pilotes conduisant un vol au départ d’une autre ville que la leur avec un avion localisé ailleurs que dans leur ville de résidence? Cviii(p,x):-PILOTE(p,x,v,_) AND VOL(_,p,n,v’,_,_,_) AND AVION(n,a,_,v’’) AND v<>v’ AND v<>v’’. (C.ix) Quels sont les pilotes ne conduisant que des vols au départ de leur ville de résidence avec un avion localisé dans cette même ville? Pilotes conduisant un avion au départ d’une autre ville que la leur. B(p,x):- PILOTE(p,x,v,_) AND VOL(_,p,n,v’,_,_,_) AND v<>v’. Pilotes conduisant un avion localisé dans une autre ville que la leur. C(p,x):-PILOTE(p,x,v,_) AND VOL(_,p,n,_,_,_,_) AND AVION(n,a,_,v’’) AND v<>v’’. Cix(p,x):-PILOTE(p,x,_,_) AND NOT B(p,x) AND NOT C(p,x). 3 Exercice D Algèbre relationnelle sur les multi-ensembles (D.i) (préliminaire) Si R, S et T sont des ensembles, si ∩ et ∪ dénotent les opérations en- semblistes usuelles, que peut-on dire de R∩ (S∪T ) et (R∩ S)∪ (R∩T )? de R∪ (S∩T ) et de (R∪S)∩ (R∪T )? R∩ (S∪T ) = (R∩S)∪ (R∩T ) R∪ (S∩T ) = (R∪S)∩ (R∪T ) Soient R = πNOM,SALσADR=′Nice′PILOT E S = πNOM,SALσSAL>2000PILOT E T = πNOM,SALσNUMPIL>100PILOT E On note ∩m et ∪m l’intersection et la réunion des multi-ensembles. (D.ii) Donner une table PILOTE sans doublon telle que R, S et T aient toutes des doublons. NUMPIL NOMPIL ADR SAL 90 ′Martin′ ′Paris′ 1500 101 ′Durand′ ′Nice′ 3000 201 ′Durand ′Nice′ 3000 302 ′Durand′ ′Paris′ 3000 421 ′Martin′ ′Bordeaux′ 2000 (D.iii) Sans connaı̂tre PILOTE, peut-on dire que R∩m (S∪m T ) = (R∩m S)∪m (R∩m T ) Si oui dites pourquoi, sinon donnez un contre-exemple. Si R= S=T = {a,a} alors R∩m (S∪m T )= {a,a,} tandis que (R∩m S)∪m (R∩m T )= {a,a,a,a}. Ces deux expressions ne sont donc pas toujours égales. (D.iv) Sans connaı̂tre PILOTE, peut-on dire que R∪m (S∩m T ) = (R∪m S)∩m (R∪m T ) Si oui dites pourquoi, sinon donnez un contre-exemple. Ces deux expressions sont égales parce qu’en appelant ar as et at les multiplicités respectives d’un n-uplet a dans R, S et T , la multiplicité du n-uplet a dans R∪m (S∩m T ) est ar + inf(as,at). Celle-ci est bien égale à inf(ar +as,ar +at), la multiplicité du n-uplet a dans (R∪m S)∩m (R∪m T ). 4