Page : 1 / 3 Département de Mathématiques et d’Informatique Deuxième année – Li

Page : 1 / 3 Département de Mathématiques et d’Informatique Deuxième année – Licence Informatique Module : Bases de données Semestre : S4 – 2013/2014 Corrigé type de l’examen de semestre 25/05/2014  Documents non autorisés ; Durée  01h30. ________________ Exercice 01 : (4 pts) Soit la relation : R (CODE_VENDEUR, NOM_VENDEUR, SECTEUR, CODE_CLIENT, NOM_CLIENT, ADR_CLIENT) Sachant que les D.F. suivantes sont vérifiées dans R : 1- CODE_VENDEUR → NOM_VENDEUR ; 2- CODE_CLIENT → NOM_CLIENT , ADR_CLIENT , SECTEUR Q1 : Trouvez une clef pour R ? (2 pts) D’après la DF n° 2, le COD_CLIENT détermine le NOM_CLIENT , ADR_CLIENT, SECTEUR La DF n° 1 montre que le COD_VENDEUR détermine le NOM_VENDEUR. Pour trouver une clé pour il faut que tous les attributs n’appartient pas à la clé dépend de la clé, donc l’union du deux parties gauches des DF1 et DF2 détermine l’union du deux parties droites. Alors COD_VENDEUR, COD_CLIENT → NOM_CLIENT , ADR_CLIENT , SECTEUR, NOM_VENDEUR Q2 : Dans quelle forme normale est cette relation? (1 pt) Pour qu’une relation soit en 2FN il faut que toutes les DFs soient élémentaires. Et à cause de DF CODE_VENDEUR → NOM_VENDEUR , la DF COD_VENDEUR, COD_CLIENT →NOM_VENDEUR n’est pas élémentaires Q3 : Proposez une décomposition de R telle que les relations obtenues soient au moins en 3FN? (3 pts) Algoritmes D3FN Etape 0 : Couverture minimale CF= { 1- CODE_VENDEUR → NOM_VENDEUR ; 2- CODE_CLIENT → NOM_CLIENT , ADR_CLIENT , SECTEUR }  = {CODE_VENDEUR, NOM_VENDEUR, SECTEUR, CODE_CLIENT, NOM_CLIENT, ADR_CLIENT} Etape 1 : Paquets : P1={DF1} ; P2={DF2} Prendre le paquet ayant le plus grand nombre de D.F. Ces D.F. sont toutes de la forme : X → A1 ; X → A2 ; ........ ; X → An, Donc c’est P2 Etape 2 : Construire une relation dont la liste des attributs est : (X , A1 , A2,.....An). Cette relation est bien en 3FN car sa seule clé est l’ensemble d’attributs X et il n’existe pas de D.F. transitive sur cette clé, Donc R1(CODE_CLIENT , NOM_CLIENT , ADR_CLIENT , SECTEUR) Etape 3 : Eliminer le paquet en cours d’examen de la couverture minimale puis éliminer tous les attributs qui deviennent isolés. Couverture minimale CF’ = { 1- CODE_VENDEUR → NOM_VENDEUR } ’ = {CODE_VENDEUR, NOM_VENDEUR} Etape 4 : S’il reste des paquets non traités Aller en Etape 1 P1={ CODE_VENDEUR → NOM_VENDEUR }, Alors construire une relation dont la liste des attributs est : CODE_VENDEUR, NOM_VENDEUR R2(CODE_VENDEUR, NOM_VENDEUR) Résultat : R1(CODE_CLIENT , NOM_CLIENT , ADR_CLIENT , SECTEUR) R2(CODE_VENDEUR, NOM_VENDEUR) Les deux relations en 3FN. Page : 2 / 3 Exercice 02 : (8 pts) Soit le schéma de la base de données relationnelle suivant : CoursJourHeur (IdCours, Jour, Heure) CoursSalle (IdCours, IdSalle) EtudNomAdr (IdEtudiant, Nom, Adresse) CoursEtudNote (IdCours, IdEtudiant, Note) Exprimer les requêtes ci-dessous en langage algébrique. Q1 : Donner les noms et les notes des étudiants qui suivent le cours ‘BDD’. (2 pts) R1 = Join (CoursEtudNote , EtudNomAdr ) R2 = Select C (R1) ; tel que C :(IdCours = ‘BDD’) RES = Project Nom, Note (R2) Q2 : Donner la note de l’ étudiant ‘OMAR’ en ‘Algo’ (2 pts) R1 = Join (CoursEtudNote , EtudNomAdr ) R2 = Select C1 (R1) ; C1 : (IdCours = ‘Algo’) R3 = Select C2 (R2) ; C2: (Nom = ‘OMAR’) RES = Project Note (R3) Q3 : Donner les couples (jour, heure) pour lesquels la salle ‘S01’ est occupée par un cours. (2 pts) R1 = Join (CoursSalle, CoursJourHeur) R2 = Select C (R1) ; C : (IdSalle = ‘S01’) RES = Project Jour, Heure (R2) Q4 : Donner les identifiants des étudiants qui n’ont que des notes ’20,00’ (2 pts) R1 = Select C (CoursEtudNote) ; C1:(Note = ’20,00’) R2 = Select C (CoursEtudNote) ; C1:(Note <> ’20,00’) R3 = R1 – R2 RES = Project IdEtudiant (R3) Exercice 03 : (6 pts) Soit le schéma de la base de données relationnelle suivant : Docteur (NumDoc, NomDoc, Spec) ; Patient (NumPat, NomPat, Age) ; Soin (NumDoc, PNum, Maladie) ; où : NumDoc : Numéro de docteurs ; NomDoc : Nom de docteur ; Spec : Spécialité de docteur NumPat : Numéro du patient ; NomPat : Nom de patient ; PNum : Numéro de patient Exprimez chaque requête suivante en langage SQL. Page : 3 / 3 Q1 : Trouvez les numéros de tous les docteurs ayant soigné le patient "BenSalah". (1 pts) SELECT NumDoc FROM Patient, Soin WHERE Patient.NumPat = Soin.PNum AND Patient.NomPat = "BenSalah" Q2 : Trouvez la liste des noms de tous les docteurs qui ont soigné le patient "BenSalah". (2 pts) SELECT NomDoc FROM Docteur, Soin, Patient WHERE Docteur.NumDoc = Soin.NumDoc AND Soin.PNum = Patient.NumPat AND Patient.NomPat = "BenSalah" Q3 : Trouvez la liste de numéros de docteurs, pour tous les docteurs qui ont soigné des patients âgés de 45 ans et la liste de leurs maladies. (3 pts) SELECT Docteur.NumDoc, Maladie FROM Docteur, Soin WHERE Docteur.NumDoc = Soin.NumDoc AND PNum IN (SELECT NumPat FROM Patient WHERE Age= 45) __________________________  uploads/Sante/ 13l2-corrige-examen-bdd.pdf

  • 44
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Apv 25, 2021
  • Catégorie Health / Santé
  • Langue French
  • Taille du fichier 0.3129MB