ÉVALUATION EN BASE DE DONNÉE TEST  04/ XX   

 

EXAMEN BASE DE DONNÉE MCD, MLD, Algebre relationnelle, normalisation, sql.

Exercice 01 : GeniusTransportTours /(06 pts)

L'agence de voyages GeniusTransportTours organise des voyages avec des visites d'endroits touristiques. Le schéma relationnel relatif à son système d’information est décrit par les relations suivantes :
Client (NoClient, NomClient, Adresse)
Voyages (NoVoyage, VilleDépart, VilleArrivée, DateDépart, DateRetour, Prix)
Inscription (NoVoyage#, NoClient#, DateInscription)
Visite (NoVisite, Endroit)
Programmes (NoVisite#, NoVoyage#, DateVisite )
1) Déduire, à partir du modèle relationnel, le modèle Entité/Association relatif à GeniusTransportTours .
Préciser les entités, les associations et les cardinalités correspondantes.
2) Exprimer, en Algèbre Relationnelle, les requêtes suivantes :
a) Quels sont les voyages (numéro) qui ont coûté moins de 2000 Fcfa ?
b) Quels sont les clients (nom et adresse) qui se sont inscrits à des voyages pendant l’année 2023.
c) Quels sont les endroits programmés pour être visités au cours du voyage V0105 ?
d) Quels sont les clients (nom et adresse) qui ont visité l’université de Dschang (endroit) ?
e) Quels sont les clients (nom et adresse) résidants à Dschang qui ont participé à un voyage
organisé au même jour que le voyage C0103 ?

 

Exercice 02 : SQL/(8 pts)

On considère le schéma relationnel suivant :
Client (NoClient, NomClient, Adresse)
Voyages (NoVoyage, VilleDépart, VilleArrivée, DateDépart, DateRetour, Prix)
Inscription (NoVoyage#, NoClient#, DateInscription)
Visite (NoVisite, Endroit)
Programmes (NoVisite#, NoVoyage#, DateVisite )
Ecrire en SQL, les requêtes suivantes :
1) Quels sont les endroits programmés pour être visités au cours de l’année 2023 ? Trier le résultat par ordre croissant.
2) Quel est le nombre de clients inscrits par voyage ? 3) Quels sont les voyages les moins chers ?
4) Quels sont les endroits qui ont été visités plus que deux fois durant le mois d’Octobre de l’année 2022.
5) Quels sont les clients (numéro et nom) qui se sont inscrits à l’un des voyages dont le client C0102 a participé ?
6) Quels sont les voyages qui n’ont pas encore programmé des visites ?
7) Quelles sont les destinations (villes arrivées) ayant un prix moyen de voyage supérieur au prix maximum proposé pour un voyage à la ville de Douala.
8) Quels sont les voyages qui ont la même ville d’arrivée que le voyage V1010, mais à un prix plus élevé.

 

 

Exercice 03 : Forme Normale /(6 pts)

Pour être plus proche de ses clients, l’agence de voyages GeniusTransportTours  a décidé d’élargir son réseau en ouvrant d’autres agences dans différentes villes du Cameroun. Afin d’arriver à gérer le personnel affilié à ces agences de voyages, le directeur de GeniusTransportTours  voudrait obtenir un système d’informations informatisé, cohérent et non redondant. Les propriétés mises en jeu sont regroupées dans la relation R suivante :
R (NumEmp, NumAg, NomAg, AdrAg, TelAg, NomEmp, PrénomEmp, MailEmp, gradeEmp,
dateDébutEmp, dateFinEmp, salaireEmp, primeEmp ).
Sachant que :
-NumAg, NomAg, AdrAg, TelAg sont respectivement le numéro de l’agence, son nom, son adresse et son numéro de téléphone.
 NumEmp, NomEmp, PrénomEmp, MailEmp, gradeEmp, salaireEmp et primeEmp sont respectivement le numéro de l’employé, son nom, son prénom, son adresse mail, son grade, son salaire et le montant de ses primes.
 -Un employé travaille dans une agence à partir d’une date dateDébutEmp jusqu’à dateFinEmp.
- Le salaire et le montant de prime d’un employé sont déduits à partir de son grade.

En tenant compte de toutes ces contraintes, donner une décomposition de R en 3ème forme normale.

Expliquer toutes les étapes et donner le schéma relationnel final

 

                                                                          Contact WhatsApp : +237 658395978

                                                                                                        Réaliser Par Joël_Yk

 
 

Solution :

Exercice 01 :

1) Modèle Entité/Association :

Entités : Client, Voyage, Inscription, Visite, Programme Associations :

Voyage est associé à Inscription (relation 1-N) : Un voyage peut avoir plusieurs inscriptions, mais une inscription ne peut correspondre qu'à un seul voyage.

Client est associé à Inscription (relation 1-N) : Un client peut avoir plusieurs inscriptions, mais une inscription ne peut correspondre qu'à un seul client.

Visite est associé à Programme (relation 1-N) : Une visite peut être programmée pour plusieurs voyages, mais un voyage ne peut contenir qu'une seule visite.

Voyage est associé à Programme (relation 1-N) : Un voyage peut contenir plusieurs visites, mais une visite ne peut être programmée que pour un seul voyage.

Cardinalités :

Voyage : (0,N) avec Inscription, (1,N) avec Programme

Client : (0,N) avec Inscription

Inscription : (1,1) avec Voyage et (1,1) avec Client

Programme : (1,1) avec Voyage et (1,N) avec Visite

Visite : (0,N) avec Programme

2) Requêtes en Algèbre Relationnelle :

a) σ Prix < 2000 (Voyages)

b) Client ⨝ σ Year(DateInscription) = 2023 (Inscription)

c) π Endroit (Programmes ⨝ NoVoyage=V0105 (Voyage) ⨝ NoVisite)

d) Client ⨝ Inscription ⨝ Programme ⨝ σ Endroit = "Université de Dschang" (Visite)

e) π NomClient, Adresse (Client ⨝ Inscription ⨝ Voyage ⨝ σ VilleDépart = "Dschang" ∧ DateDépart = DateDépart(C0103) (Inscription ⨝ Voyage))

Exercice 02 :

1-------

SELECT DISTINCT Visite.Endroit
FROM Visite, Programmes, Voyages
WHERE Visite.NoVisite = Programmes.NoVisite#
AND Programmes.NoVoyage# = Voyages.NoVoyage
AND YEAR(Programmes.DateVisite) = 2023
ORDER BY Visite.Endroit ASC;

2-------

SELECT Inscription.NoVoyage#, COUNT(Inscription.NoClient#) AS NombreClientsInscrits
FROM Inscription
GROUP BY Inscription.NoVoyage#;

3-------

SELECT Voyages.NoVoyage
FROM Voyages
WHERE Voyages.Prix = (SELECT MIN(Voyages.Prix) FROM Voyages);

4------

SELECT Visite.Endroit
FROM Visite, Programmes
WHERE Visite.NoVisite = Programmes.NoVisite#
AND MONTH(Programmes.DateVisite) = 10
GROUP BY Visite.Endroit
HAVING COUNT(*) > 2;

5--------

SELECT DISTINCT Inscription.NoClient#, Client.NomClient
FROM Inscription, Client
WHERE Inscription.NoVoyage# IN (
  SELECT Inscription.NoVoyage#
  FROM Inscription
  WHERE Inscription.NoClient# = 'C0102'
)
AND Inscription.NoClient# = Client.NoClient;

6-----

SELECT Voyages.NoVoyage
FROM Voyages
WHERE Voyages.NoVoyage NOT IN (
  SELECT DISTINCT NoVoyage#
  FROM Programmes
);

7-----

SELECT DISTINCT Voyages.VilleArrivée
FROM Voyages
WHERE Voyages.Prix > (
  SELECT MAX(Voyages.Prix)
  FROM Voyages
  WHERE Voyages.VilleArrivée = 'Douala'
);

8-------

SELECT Voyages.NoVoyage
FROM Voyages
WHERE Voyages.VilleArrivée = (
  SELECT Voyages.VilleArrivée
  FROM Voyages
  WHERE Voyages.NoVoyage = 'V1010'
)
AND Voyages.Prix > (
  SELECT Voyages.Prix
  FROM Voyages
  WHERE Voyages.NoVoyage = 'V1010'
);

 

Exercice 03 :

Pour décomposer la relation R en 3ème forme normale, nous allons suivre les étapes suivantes :

Identifier les dépendances fonctionnelles de la relation R.

Diviser la relation en sous-relations qui ne présentent pas de dépendances fonctionnelles transitives.

Vérifier que les sous-relations obtenues sont bien en 3ème forme normale.

Dépendances fonctionnelles de la relation R :

NumEmp → NomEmp, PrénomEmp, MailEmp, gradeEmp, dateDébutEmp, dateFinEmp, salaireEmp, primeEmp NumAg → NomAg, AdrAg, TelAg

Diviser la relation en sous-relations :

Nous avons deux dépendances fonctionnelles dans la relation R, qui nous permettent de créer deux sous-relations :

Sous-relation 1 : Agence (NumAg, NomAg, AdrAg, TelAg) Sous-relation 2 : Employé (NumEmp, NumAg, NomEmp, PrénomEmp, MailEmp, gradeEmp, dateDébutEmp, dateFinEmp)

Vérifier la 3ème forme normale :

La sous-relation Agence ne contient pas de dépendances fonctionnelles, donc elle est en 3ème forme normale.

Pour la sous-relation Employé, nous avons une dépendance fonctionnelle : NumEmp → gradeEmp, salaireEmp, primeEmp. Cette dépendance fonctionnelle ne présente pas de dépendance fonctionnelle transitives, donc la sous-relation Employé est en 3ème forme normale.

Schéma relationnel final :

Agence (NumAg, NomAg, AdrAg, TelAg) Employé (NumEmp, NumAg, NomEmp, PrénomEmp, MailEmp, gradeEmp, dateDébutEmp, dateFinEmp)

Note : Nous avons supprimé les attributs salaireEmp et primeEmp de la sous-relation Employé, car ils peuvent être déduits à partir de l'attribut gradeEmp.

Télécharger L'exercice Sous Forme de PDF

Si vous avez trouvé les examens corrigés en Base de donnee de Mr JoëlYk intéressants et utiles, pourquoi ne pas les partager avec d'autres personnes qui pourraient également en bénéficier ? Partagez ce lien sur les réseaux sociaux ou envoyez-le à vos amis et collègues. Vous pourriez aider quelqu'un à améliorer ses compétences en programmation ou à trouver des solutions à des problèmes complexes. N'oubliez pas que la connaissance doit être partagée pour grandir. Merci pour votre soutien et votre partage !

Contact WhatsApp : +237 658395978 | Réaliser Par Joël_Yk

  • Aucune note. Soyez le premier à attribuer une note !

Ajouter un commentaire

Anti-spam