aaaaaa Année Spéciale - OMGL-10 Contrôle Partiel 2 (correction) Durée : 2 heures. 16 mai 2012 Documents et calculette non autorisés. Les exercices sont indépendants les uns des autres. On accordera une grande attention au respect des notations. aaaaaa 1 Normalisation On souhaite gérer un site de quizz sur internet. Pour cela, on crée la relation : R(pseudo, mail, quizz, theme, date, reponses, resultat). Un joueur de pseudonyme pseudo et d'adresse mail mail joue à un quizz quizz sur le thème theme à la date date. Il donne les réponses reponses et obtient le résultat resultat. Une analyse de la situation nous fournit un ensemble initial F de dépendances fonctionnelles : pseudo mail quizz theme pseudo, date mail pseudo, quizz date pseudo, quizz reponses pseudo, quizz resultats date, quizz theme reponses, quizz resultats Répondez aux questions suivantes, en justiant vos réponses. 1. D'après ces dépendances fonctionnelles : a) Un joueur peut-il faire deux fois le même quizz? Justier. Non car pseudo,quizz date b) Un joueur peut-il faire plusieurs quizz? Justier. Oui car on n'a pas pseudo quizz 2. Toutes ces dépendances fonctionnelles sont-elles élémentaires? Justier. NON : pseudo,date mail n'en est pas une car pseudo mail date,quizz theme n'en est pas une car quizz theme
3. Y-a-t-il des dépendances fonctionnelles redondantes? si oui, lesquelles? OUI : pseudo,quizz resultats 4. Donner le graphe de la couverture minimale de F. 5. Trouver la ou les clés de R. Justier qu'il s'agit bien d'une clé. Donner la forme normale de R Ċlé de R : (pseudo,quizz) car ils permettent de déterminer tous les autres attributs, l'un ou l'autre ne sut pas et ils ne sont déterminés par aucun autre attribut. R est 1FN car pseudo mail 6. On propose la décomposition suivante de R : Joueur(pseudo, mail) aaaaaa Jeu(quizz, reponses, theme, resultat) a) Y-a-t-il perte de DF? Justier. Oui : pseudo,quizz date, pseudo,quizz reponses et pseudo,quizz resultats. b) Y-a-t-il perte d'informations? Justier. Oui car on ne peut pas refaire la jointure. c) Donner la forme normale de chacune des 2 relations. Justier. Joueur : 3FN Jeu : 1FN car quizz theme 7. On propose la décomposition suivante de R. Joueur(pseudo, mail) aaaaaa Jeu(quizz, pseudo, theme, date, reponses, resultat) a) Y-a-t-il perte de DF? Justier. Non. b) Y-a-t-il perte d'informations? Justier. Non. c) Donner la forme normale de chacune des 2 relations. Justier. Joueur : 3FN Jeu : 1FN car quizz theme d) Proposer une autre décomposition de R qui soit en 3ème forme normale, qui préserve l'information et les dépendances fonctionnelles. Joueur(pseudo, mail) Jeu(quizz, pseudo, date, reponses) Resultats(quizz, reponses, resultat) T hematique(quizz, theme) 2 Passage schéma Entitée/Association schéma relationnel Le schéma Entité/Association fourni ci-dessous représente une partie du système d'information d'une entreprise de location de DVD. Les DVD proviennent de fournisseurs dont l'entreprise garde le nom et l'adresse. Elle garde également le prix de chaque DVD acheté et relève le titre, la durée et le réalisateur du lm qu'il contient.
L'entreprise garde le nom, le prénom et le numéro de téléphone de chaque nouveau client ainsi que la date de chaque location. Quand il rend un DVD, un client peut lui donner une note. Il peut également proter d'une réduction. Questions : 1. Déterminer le schéma relationnel correspondant à ce schéma Entité/Association. 2. Préciser dans chaque relation les clés primaires en les soulignant. 3. Préciser les contraintes d'intégrité référentielle (clés étrangères). DV D(codeDV D, titre, duree, realisateur, #codef ournisseur, prix) Client(codeClient, nom, prenom, telephone) Reduction(codeReduction, pourcentage) F ournisseur(codef ournisseur, nomf ournisseur, adressef ournisseur) A_une_reduction(#codeClient, #codereduction, raison) Location(#codeDV D, #codeclient, date) Evaluation(#codeDV D, #codeclient, note) 3 Modèle conceptuel de données MCD Une association étudiante propose à ses membres un certain nombre d'activités. Des subventions sont attribuées à chaque activité ce qui permet d'acheter notamment du matériel (ballons, livres, dés,...). Les règles de gestion identiées sont les suivantes : RG1 : Chaque nouveau membre est enregistré avec un code, son nom, son prénom et son âge. Il faut participer à au moins une activité pour être membre. RG2 : Les activités sont numérotées. On garde en mémoire leur intitulé et leur domaine (sport, jeu,...). RG3 : Des subventions sont disponibles tout au long de l'année. Elles sont identiées par un code et caractérisées par la somme qu'elles représentent. Une subvention est attribuée à une seul activité mais une activité peut proter de plusieurs (ou d'aucune) subventions. RG4 : Certaines activités ont besoin de matériel. Celui-ci est numéroté. Il peut être partagé entre plusieurs activités.
RG5 : Les subventions n'étant pas susantes, certains membres prêtent du matériel. Le propriétaire de chaque objet prêté est gardé en mémoire. RG6 : Chaque activité a un responsable parmi les membres. Un membre peut être responsable de plusieurs activités. Á partir des règles de gestion ci-dessus, élaborer le modèle conceptuel de données (MCD). 4 Vues, droits et Triggers Les relations suivantes dénissent la gestion des notations dans un établissement scolaire : Eleve(loginE, nome, prenome, classee) Cours(numC, intitulec, #loginp ) N otation(#logine, #numc, note) P rofesseur(loginp, nomp, prenomp ) 1. Créer un trigger qui vérie qu'une note ne soit pas supérieure à 20. CREATE FUNCTION f_evaluation() RETURNS trigger AS ' aaaaaa BEGIN aaaaaaaaaaaa If new.note>20 aaaaaaaaaaaa then raise EXEPTION pas de note supérieure a 20; aaaaaaaaaaaa End if; aaaaaa RETURN NEW; aaaaaa END ; aaaaaa 'LANGUAGE 'plpgsql' ; CREATE TRIGGER t_evaluation BEFORE INSERT OR UPDATE ON Notation FOR EACH ROW EXECUTE PROCEDURE f_evaluation(); 2. Proposer une vue et une gestion de droits qui permettent à l'élève de login dupond de consulter ses notes lorsqu'il est connecté.
CREATE VIEW visunoteeleve(note) AS SELECT note FROM Notation WHERE logine=text(getpgusername()); REVOKE ALL ON Notation FROM dupond; GRANT SELECT ON visunoteeleve to dupond; 3. Proposer une vue et une gestion de droits qui permettent à l'enseignant de login martin de consulter, rentrer et modier les notes relatifs aux cours qu'il assure. CREATE VIEW evaluationenseignant(note) AS SELECT note FROM Notation N, Cours C WHERE C.numC=N.numC AND C.loginP=text(getpgusername()); REVOKE ALL ON Notation FROM martin; GRANT SELECT,INSERT,UPDATE ON evaluationenseignant TO martin;