Suivant Index

1  Modèle Relationnel (10 points)

Les aéroports de Paris (ADP) gèrent leurs vols avec une base de données relationelle. On considère le schéma relationnel suivant :

Vols (NumVol, NumAv, Piste, AerDep, AerArr, DatDep, HeuDep, HeuArr)
Clients (NomCl, NumVol, Siège)
Avions (NumAv, Comp, Places)

Les attributs sont:

NumVol: numéro de vol
Piste: piste de départ
Comp: compagnie de vols
AerDep aéroport de départ
AerArr: aéroport d'arrivée
DatDep: date de départ
HeuDep heure de départ
HeuArr: heure d'arrivée
NomCl: nom du client
Siège: siège réservé
NumAv: numéro d'avion
Places: nombre de places disponibles

1.1  Algèbre et SQL (8 points)

Écrivez les requêtes suivantes en algèbre relationnelle et en SQL :
  1. Les aéroports avec des départs de vols Air France? (2 points)

    Solutions:
    piAerDep(Vols join sigmaComp='Air France'(Avions))
    select AerDep
      from Vols, Avions
     where Comp = 'Air France'
       and Vols.NumAv = Avions.NumAv;
    
  2. Les noms des clients qui prennent des vols Air France? (2 points)

    Solutions:
    piNomCl(sigmaComp='Air France'(Avions) join Vols join Clients)
    select NomCl
      from Vols, Clients, Avions
     where Comp = 'Air France'
       and Vols.NumVol = Clients.NumVol
       and Vols.NumAv = Avions.NumAv;
    
  3. Les numéros de vols avec la même date de départ, le même aéroport de départ et d'arrivée que le vol ayant pour numéro AF169? (2 points)
    Solutions:
    piNumVol(Vols join piDatDep,AerDep,AerArr(sigmaNumVol='AF169'(Vols)))
    select A.NumVol
      from Vols A, Vols B
     where B.NumVol = 'AF169'
       and A.DatDep = B.DatDep
       and A.AerDep = B.AerDep
       and A.AerArr = B.AerArr;
    
  4. Les noms des compagnies avec le nombre de leurs clients? (2 points)

    Solutions:
    algebre pas possible
    select Comp, count(distinct NomCl)
      from Clients, Avions, Vols
     where Clients.NumVol = Vols.NumVol
       and Vols.NumAv = Avions.NumAv
     group by Comp;
    
  5. Les numéros de vols qui ne sont pas d'Air France avec une date de départ le 14/7/98 et avec des places libres? (2 points bonus)

    Solutions:
    algebre pas possible
    select NumVol
      from Vols, Avions
     where DatDep = '14/7/98'
       and Comp <> 'Air France'
       and Vols.NumAv = Avions.NumAv
       and Places > (select count(distinct Siège)
                       from Clients
                      where Clients.NumVol = Vols.NumVol);
    

1.2  Dépendances fonctionnelles (2 points)

  1. Comment peut-on exprimer le fait qu'il ne peut y avoir deux départs sur une même piste (dans un aéroport) en même temps? (1 point)

    Solutions:
    Piste AerDep DatDep HeuDep -> NumVol
  2. Donnez l'ensemble des dépendances fonctionnelles définies pour la relation Clients. Donnez les clés de cette relation? Est-ce qu'elle est en 3e Forme Normale? (1 point)

    Solution:
    F={Siege NumVol-> NomCl}. La clé est Siege NumVol. La relation est en 3e Forme Normale.

Suivant Index