POLYCOPIE_EXAMENS_BASEDEDONNEES.pdf
Télécharger PDFUniversité Sultan Moulay Slimane Faculté des Sciences et TechniquesBéni-Mellal Département Informatique
Examen Final --- Bases de données 2019-2020
Veuillez répondre sur la feuille d’examen
Agence de voyage
Soit le schéma relationnel suivant qui représente la base de données d’une agence de voyage.
CLIENT (NumCli, Nom, Prénom, e-mail, Banque)
VOYAGE (RefVoyage, Destination, Durée, Prix)
RESERVATION (NumCli, RefVoyage, DateRes)
PARTIE CONCEPTION :
1. Donner le dictionnaire de données pour ce schéma.
| Attribut | Type | Nature | Designation | Domaine |
|---|---|---|---|---|
| NumCli | numérique | Numéro du client | ||
| Nom | Texte | Nom du client | ||
| Prénom | Texte | Prénom du client | ||
| Texte | Email du client | |||
| Banque | Texte | La banque du client | ||
| RefVoyage | Numérique | Référence des voyages | ||
| Destination | Texte | La destination d’un voyage | ||
| Durée | Numérique | La durée d’un voyage | ||
| Prix | Numérique | Le prix d’un voyage | ||
| DateRes | Numérique | La date de réservation |
2. Donner le modèle conceptuel de données correspondant (MCD).
Client Voyage
réservé
3. Quelles sont les types d’associations et règles appliquées pour traduire ce MLD en MCD ?
2
Vu que nous avons une relation réservation avec les clés primaires des deux relations client et voyage, ainsi l’association entre ces deux entités est de type (n : n), ainsi la règle appliquée, l’association (n :n) donne naissance à une nouvelle table/relation dont la clé primaire est une clé composée des deux clés primaires des deux entités.
PARTIE REQUETES SQL:
Soit un extrait de la base de données ‘Agence de voyage’ sur MsAccess :
Table Client
| NumCLi | Nom | Prénom | Banque | |
|---|---|---|---|---|
| Cli010 | Raji | Ahmed | rajiahmd@gmail.com | BMCE |
| Cli110 | Raji | Salma | sal.raji@gmail.com | BMCI |
| Cli120 | Khalif | Leila | leilkhalif@gmail.com | BMCE |
| Cli005 | Badi | Reda | Redabai19@gmail.com | BP |
Table Voyage
| RefVoyage | Destination | Durée (en jours) | Prix (en dhs) |
|---|---|---|---|
| RefV1565 | Istambul | 5 | 5044 |
| RefV124 | Tunis | 10 | 3015 |
| RefV0278 | Grenada | 15 | 4000 |
Table Reservation
| NumCli | RefVoyage | DateRes |
|---|---|---|
| Cli010 | RefV0278 | 04/01/2020 |
| Cli110 | RefV124 | 05/01/2019 |
| Cli120 | RefV1565 | 04/01/2020 |
| Cli005 | RefV124 | 05/02/2019 |
| Cli005 | RefV1565 | 04/02/2020 |
| Cli120 | RefV124 | 05/02/2020 |
| Cli120 | RefV0278 | 04/01/2019 |
Exprimer les requêtes suivantes en langage SQL :
1. Insérer un nouveau voyage (RefV005, Montréal, 5, 8055)
INSERT INTO Voyage VALUES ('RefV005', 'Montréal', 5, 8055);
2. Ajouter une colonne ‘Tel’ de type numérique à la table Client
ALTER TABLE Client ADD Tel INT;
3. Donner la liste des voyages ayant une durée inférieure à 12 jours (le code SQL + résultat affiché)
SELECT * FROM Voyage WHERE Durée < 12;
| RefVoyage | Destination | Durée (en jours) | Prix (en dhs) |
|---|---|---|---|
| RefV1565 | Istambul | 5 | 5044 |
| RefV124 | Tunis | 10 | 3015 |
4. Donner la liste des clients qui sont affiliés à la banque BMCE et BMCI (le code SQL + résultat affiché)
SELECT * FROM Client WHERE Banque IN ('BMCE', 'BMCI');
| NumCLi | Nom | Prénom | Banque | |
|---|---|---|---|---|
| Cli010 | Raji | Ahmed | rajiahmd@gmail.com | BMCE |
| Cli110 | Raji | Salma | sal.raji@gmail.com | BMCI |
| Cli120 | Khalif | Leila | leilkhalif@gmail.com | BMCE |
5. Donner le numéro des clients qui ont une réservation en cours (le code SQL + résultat affiché)
SELECT NumCli FROM Client WHERE NumCli IN (SELECT NumCli FROM Reservation);
| NumCli | RefVoyage | DateRes |
|---|---|---|
| Cli010 | RefV0278 | 04/01/2020 |
| Cli120 | RefV1565 | 04/01/2020 |
| Cli005 | RefV1565 | 04/02/2020 |
| Cli120 | RefV124 | 05/02/2020 |
6. Donner la destination et la durée du voyage du client ‘Cli120’ (le code SQL + résultat affiché)
SELECT Destination, Durée FROM Voyage WHERE RefVoyage IN (SELECT RefVoyage FROM Reservation WHERE NumCli = 'Cli120');
| Destination | Durée (en jours) |
|---|---|
| Istambul | 5 |
| Tunis | 10 |
| Grenada | 15 |
7. Quel est le montant total des voyages du client ‘Cli120’ (le code SQL + résultat affiché)
SELECT SUM(Prix) AS 'Montant Total' FROM Voyage V, Reservation R WHERE V.RefVoyage = R.RefVoyage AND R.NumCli = 'Cli120';
| Montant Total |
|---|
| 12059 |
FAQ
1. Comment insérer un nouveau voyage dans la base de données ?
2. Comment ajouter une colonne à une table existante ?
3. Comment lister les voyages ayant une durée inférieure à 12 jours ?