Lif4 td5 Correction
Lif4 td5 Correction
associations
Correction
Exercice 1:
On souhaite gérer des réservations dans une compagnie d’hôtels. À cette fin, on considère le
diagramme entité-association suivant (les attributs soulignés sont les identifiants des entités) :
Client
Réservation Chambre Hotel
0,*
numéro
numéro numéro nom
nom
date prix adresse
prénom
1,1 1,1 0,n
1,n
effectue correspond_a
1
SELECT DISTINCT numclient
FROM Reservation
GROUP BY numclient, nomhotel
HAVING COUNT(*) > 1
(b) donner les chambres disponibles le 15 avril 2006 à l’hôtel “Belaventure”.
Correction:
SELECT numero
FROM Chambre
WHERE nomhotel=’Belaventure’
AND numero NOT IN
(SELECT numchambre
FROM Reservation
WHERE nomhotel=’Belaventure’
AND date = ’15/04/2006’)
Exercice 2:
Partie 1
Le directeur d’une chaı̂ne de magasins de vente de CD (la ”Fnak”) vous charge de créer le
système d’informations de son service de vente par Internet (”Fnak.com”). Afin de mieux cerner
les besoins de cette entreprise, vous avez interrogé le directeur et pu en dégager les points suivants
:
La seule activité de Fnak.com est la vente de CD musicaux au public français sur Internet.
Les visiteurs du site de vente en ligne ne peuvent acheter qu’après avoir ouvert un compte client
auquel ils se connectent en entrant leur e-mail et un mot de passe d’au moins huit caractères. Lors
de leur inscription, il leur est demandé leur état civil, leur adresse (celle qui sera utilisée pour
la facturation des CD achetés) et leur numéro de carte de fidélité des magasins Fnak (s’ils en
possèdent une).
Pour chaque CD du catalogue, un visiteur peut visualiser la pochette de l’album et un com-
mentaire de cet album. Il peut également savoir si c’est une édition spéciale de l’album (un CD
Collector par exemple). Le numéro de code barre d’un CD est différent selon l’édition de l’album.
Le prix (exprimé en euros) d’un CD dépend de la date depuis laquelle il est sorti. En général,
à sa sortie, son prix est modéré, puis quelques semaines plus tard, le prix est rehaussé. Enfin, les
CD à succès sont vendus à prix cassé au bout de quelques mois.
Lors d’une visite sur le site, un client peut créer un nouveau ”panier” dans lequel il met le
ou les CD qu’il veut acheter ainsi que le nombre d’exemplaires qu’il souhaite acheter. Ce panier
est modifiable tant que le paiement de celui-ci n’est pas validé et confirmé. Le paiement s’effectue
par un intermédiaire spécialisé qui se charge de prélever le coût de leur commande aux clients,
de confirmer à Fnak.com que la commande a bien été payée et d’éditer un numéro unique de
paiement. Une facture est alors établie, chaque facture a un numéro (unique mais les numéros ne
se suivent pas forcément), les coordonnées du client, une adresse de facturation, une adresse de
livraison et la liste des CD achetés.
Il existe un outil permettant de rechercher un CD par son auteur, son titre ou le nom d’une
piste de ce CD. A chaque CD consulté, une liste d’autres CD est proposée au client. Cette liste
est du type ”les internautes ayant acheté ce CD ont aussi acheté :”.
Des frais de livraison sont facturés aux clients : chaque commande coûte 3 euros plus 1 euro
par CD commandé.
Une commande peut avoir plusieurs états après sa validation : ”en attente de réapprovi-
sionnement” lorsqu’un ou plusieurs CD n’est pas en stock, ”en cours de traitement” lorsque la
commande est en cours de traitement, ”en cours de livraison” lorsqu’elle est chez le transporteur
2
(le client peut alors consulter le numéro du colis postal correspondant) puis finalement ”livrée”
lorsque le transporteur a confirmé que le colis a bien été livré.
Client appartient_a
1,1 Panier 0,n
email cree numero
quantite
mdp
nom 0,1
prenom 0,n 0,n
adresse
num_abonne ? CD
mene_a code_barre Piste
pochette 1,n numero
type_edition
auteur titre
disponibilite
1,1 commentaire
Facture 1,n
numero
date coute
etat
adresse_livraisson prix
numero_colis ?
numero_paiment ? 0,n
Date
date
Il existe sans doute plusieurs modèles possibles! En voilà un... J’ai ajouté quelques commen-
taires
– L’attribut pochette est une image (ou le nom d’un fichier image)
– commentaire est un attribut de type texte long, il est raisonnable de penser que le
commentaire dépend de l’édition de ce CD et pas seulement de l’album
– type edition est un attribut pouvant prendre les valeurs ”Normal”, ”Collector”, ”Re-
masterisé”...
3
– disponibilite renseigne sur la quantité en stock
• PANIER(num panier)
• FACTURE(num facture, date facture, adresse livraison, num paiement, etat, num colis,
num panier, email)
– date facture correspond à la date à laquelle la commande a été réglée, elle peut donc
être NULL tant que la commande n’est pas validée
– L’adresse livraison est saisie lors du paiement, elle peut donc être NULL tant que la
commande n’est pas validée
– email est l’identifiant d’un CLIENT
– etat peut avoir pour statut ”En cours de paiement” et toutes les valeurs de statut de
l’énoncé
– num paiement (resp. num colis) est NULL jusqu’à la validation du paiement (resp.
l’envoi de la commande)
– num panier permet de savoir à quel panier correspond la facture
• COMPOSITIONPANIER(num panier,num code barre, quantité)
• Les tarifs postaux sont susceptibles de changer, il serait donc sans doute plus prudent d’en
faire des informations dans notre base de données.
4
Partie 2
Quelques mois après l’ouverture du site Fnack.com, le succès est tel que le directeur souhaite
proposer son service dans d’autres pays. Proposer une modification de votre schéma permettant
de prendre en compte ce nouveau paramètre.
Tous les pays ne sont pas francophones, il faut donc traduire les informations et proposer à un
client une version du site traduite dans sa langue maternelle.
Les monnaies ne sont pas les mêmes, le prix est donc calculé en fonction du taux de change
(qui change tous les jours) et arrondi à une puissance de 10 dépendante de la monnaie utilisée
(on arrondit par exemple à 10 yens japonais près mais à 0,01 dollars canadien près).
Les frais de livraison dépendent du pays. Le prix dépend du nombre de colis ou du nombre de
CD contenus dans le colis ou d’une combinaison de ces deux critères.
Correction:
• Il faut ajouter une relation DEVISE(Nom, arrondi)
– arrondi est un entier donnant la puissance de 10 à utiliser pour arrondir les prix
• Il faut ajouter une nouvelle relation. PAYS(nom, devise, prix colis, prix CD)
• Le commentaire d’un CD doit être traduit. Il faut donc retirer l’attribut commentaire de la
table CD et ajouter une relation COMMENTAIRE(num code barre, langue, commentaire)
– num code barre est un identifiant de CD
• Il faut traduire les statuts et les type d’éditions ce qui nous oblige à créer deux autres rela-
tions. STATUTTRADUITS(StatutEnFrancais, langue, StatutTraduit) et
TYPEEDITIONSTRADUITS(TypeEnFrancais, langue, TypeTraduit)
Le diagramme mis à jour donne:
5
Client Panier 0,n appartient_a
email cree
1,1 numero quantite
mdp
nom 0,1
0,n
prenom 0,n
adresse
num_abonne ? CD
1,1 mene_a
1,1 code_barre Piste
pochette 1,n
numero
est_membre_de parle type_edition
auteur titre
1,1 disponibilite
Facture
0,n 0,n numero 0,n
Pays date
Langue etat coute
nom adresse_livraisson
nom 1,n
prix_colis numero_colis ?
prix_cd numero_paiment ? prix 1,n