correction TD1 TD1
Exercice 2
Le sujet de cet exercice est l'oeuvre de Cécile CAPPONI, tout comme la majorité de cette correction.
Certaines questions vous ont été épargnées dans l'énoncé du TD, vous les trouverez toutefois dans cette correction.
Pour chaque question on donne sa réponse sous forme de langage algébrique puis en SQL en police "courier". Pour la plupart des questions, il peut exister plusieurs solutions algébriques
(puisque certains opérateurs s'expriment en fonction …afficher plus de contenu…
Pour lever l'ambiguïté, nous précisons d'où vient l'attribut en le préfixant par une variable liée à la table correspondante. Dans la requête SQL, lever cette ambiguïté est plus aisé, puisque nous devons renommer les tables intermédiaires qui sont arguments de jointure.
R1 = NATURAL JOIN(occupation, client C)
R2 = JOIN( R1, hotel H, R1.numhotel = H.numhotel)
-- ici deux colonnes de même nom existent, d'où les renommages : C.nom et H.nom
RESULTAT = PROJECT(R2, C.nom, prenom, H.nom, ville, datearrivee, datedepart) SELECT sejour.nom, prenom, hotel.nom, hotel.ville, datearrivee, datedepart
FROM hotel
JOIN ( SELECT * FROM occupation JOIN client ON occupation.numclient=client.numclient ) AS sejour
ON hotel.numhotel = sejour.numhotel …afficher plus de contenu…
Il faut répertorier les séjour du client précisé. Nous commençons par repérer le client en question
(dans R1). puis nous passons par la relation occupation pour récupérer toutes les chambres que ce client a occupées avant le 02/04/2014 (R2 puis R3), et nous passons enfin par la relation chambre pour obtenir le prix de la chambre occupée dans le séjour concerné (jointure R4), et enfin nous projetons le résultat obtenu par hôtel, chambre, client, dates d'arrivée et de départ (tout