CNAM GRENOBLE EXAMEN 2010-2011 Unité d Enseignement : Administration et configuration des bases de données Centre d Enseignement CNAM de Grenoble Enseignant : M. Eric Boniface Jour/Date de l épreuve : mardi 8 février 2010 Code CNAM : NFE113 Horaire : 18h00 Durée : 3h00 SUJET Documents autorisés Nombre de pages du sujet : 4 Votre code auditeur : You can find an English version in the second part of the document. Partie I - QCM (5 points) Le QCM est composé de 10 questions sur 0,5 chacune. Il faut cocher tous les choix valables pour une réponse, un oubli ou une erreur 0. Les deux pages du QCM sont à rendre avec la copie. 1) Citer les inconvénients de l approche «fichier» Redondance des données Stockage sur disque limité Pas d accès simultané Il n y en a pas puisque les SGBD utilisent des fichiers 2) Les objectifs d un SGBD sont Eviter la redondance des données Contrôler les accès Faire que seul le DBA puisse comprendre les schémas Eviter systématiquement toute panne et perte de données 3) Ne pas faire de conception (modélisation conceptuelle) implique Gagner du temps sur la création Sous estimer le temps Une maintenance difficile Licencier le DBA 4) Quelle(s) est(sont) l(es) assertion(s) correcte(s)? Le schéma conceptuel est une description de haut niveau Le schéma virtuel permet de mieux appréhender le futur schéma physique Le schéma physique est indépendant du SGBD 5) A quoi sert la normalisation? A éliminer les redondances A éviter les valeurs nulles A rédiger toute la documentation A ne pas créer d index
6) Une relation est en 3FN si Elle est en 2FN et s il n y a pas de DF entre 2 attributs non clés Elle est en 1FN et s il n y a pas de DF entre 2 attributs non clés et si tout attribut non clé dépend de la clé entière et non d une partie seulement Elle est en BCNF 7) Les cardinalités (modèle EER) peuvent prendre les valeurs 0..n 0..1 *..2 1..3 *..* 8) Opérateur algébrique : σ Soit la relation R suivante, que retourne σ (A>= w ET A<= z ET B= d ) R? A B C w b 2 x d 1 w d 3 s e 1 a 2 D w b 2 R ={(w,b,2)} R ={(w,d,3), (x,d,1)} R ={(w,d,3)} R ={(w,b,2),(w,d, 3)} R ={} (ensemble vide) 9) Opérateurs algébriques : σ et Soit la relation R, que retourne A,C,E σ (B= b OU C= f ) R? A B C D E a b 2 f g b d 1 s u a b 1 x r d e f a b a 2 d e 1 R ={(b,d,1),(d,1,x),(a,1,u)} R ={(d,e,1), (a,d,1),(1,d,x)} R ={(d,1,u), (d,1,r), (e,1,b)} R = R ={(a,2,g), (a,1,r),(d,f,b)} R ={(d,1,u), (d,1,r), (e,1,b)} 10) Le plan d exécution c est l analyse de la requête l exécution des requêtes l ordonnancement en séquence d opérations élémentaires l optimisation des requêtes tout cela
Partie II Dépendances fonctionnelles (3 points) Soit la relation R(I,J,K,L) et les dépendances fonctionnelles : F={JK L; J I; IK L}. Questions : 1. Trouver une couverture minimale de F (conseil : utiliser le graphe de dépendance) 2. En quelle forme normale est R? 3. Proposer une décomposition de R en 3NF préservant les dépendances fonctionnelles, la décomposition comportant seulement deux relations. Correction 1. La couverture non minimale est : Or certaines DF ne sont pas élémentaires. Ainsi JK L peut être déduit par les 2 autres DF => DF superflue. D où la couverture minimale : 2. La clé candidate est J, K R est en 1NF. Mais pas en 2NF car J I, et J partie de la clé candidate. 3. Passage en 3NF R1 (J, K, L) où J, K est clé candidate R2 (J, I) où J est clé candidate Les 2 relations sont 2NF, 3NF et BCNF. Partie III Conception (8 points) Sylvie a suivi une formation afin de se reconvertir en sophrologue et ainsi se mettre à son compte. Son mari étant informaticien, elle souhaite lui faire développer quelques outils pour l aider dans la gestion de son activité ; ces différents outils vont s articuler autour d un site Web, unique point d entrée pour elle et pour les clients. L outil le plus important pour elle à court terme est la gestion des clients et des rendez-vous. Elle souhaite effectivement faire le suivi des clients, référencés par leur nom et prénoms, leurs coordonnées, leur courriel s ils en ont un. Par suivi, elle entend savoir comment a-t-il connu Sylvie (par un autre client, par Internet, par le bouche à oreille, par la brochure, etc.), connaître tous les rendez-vous pris ou futurs de ce client, est-ce que ce client a des pathologies particulières ou des contre-indications. Un rendez-vous est défini par une date, une durée de séance suivant des valeurs prédéfinies (15 mn, 30 mn, 1 h), un lieu de séance (tel que domicile du patient, cabinet, domicile de la praticienne, etc.). Une gestion de trésorerie pourrait être intéressante, simplement pour suivre le paiement de chaque séance, suivant plusieurs
modalités possibles (chèque ou espèces). Un bilan de la trésorerie sur une période donnée pouvant être générée par un développement Web. Un client pourra se connecter au site Web via un compte et un mot de passe, respectant certaines normes de sécurité (longueur de 6 caractères, comportant au moins un chiffre et des lettres). Le client verra ainsi les rendez-vous qu il a pris (passés ou futurs), et pourra s inscrire pour un futur rendez-vous dans le calendrier. Par contre, il ne verra pas les informations des autres clients. Si un client fait de la publicité pour Sylvie (autrement dit, s il fait venir d autres clients), il pourra bénéficier de réductions ou de promotions exceptionnelles. Les pathologies ou contre-indications pourront être des zones de texte libre qui seront accessibles via une interface Web (avec moteur de recherche). Sylvie aura un accès complet à l application, entre autres au calendrier, dans lequel elle verra en instantané les rendez-vous de la semaine; elle pourra bien sûr prendre de nouveaux rendez-vous ou en supprimer/modifier. L interface Web permettra de basculer d un rendez-vous vers la fiche client, de voir tous les rendez-vous pris, etc. Questions 1) Construire le schéma Entité Association. Justifier vos choix. 2) Est-ce que le modèle EA suffit? Si non, proposer un schéma EA Etendu et justifier vos choix. 3) Traduire le modèle proposé en modèle relationnel. Justifier le choix des clés primaires et étrangères (le cas échéant). 4) Nouveau besoin : une gestion de publipostage lui paraît utile ; L idée est de pouvoir envoyer un message électronique à tous les clients disposant d un courriel éventuellement avec une pièce jointe (taille limitée). Ensuite, elle doit pouvoir suivre l historique de tels envois pour savoir quand est-ce qu elle a contacté un client. Proposer une évolution des schémas EA et relationnel précédents. Partie IV SQL (4 points) Dans le cours, nous avons vu le modèle relationnel suivant : FILM (NUMF, TITRE, GENRE, ANNEE, LONGUEUR, BUDGET, REALISATEUR, SALAIRE_REAL) DISTRIBUTION (NUMF, NUMA, ROLE, SALAIRE) PERSONNE (NUMP, PRENOM, NOM, DATENAIS, NATIONALITE, ADRESSE, VILLE, TELEPHONE) ACTEUR (NUMA, AGENT, SPECIALITE, TAILLE, POIDS) CINEMA (NUMC, NOM, ADRESSE, VILLE, TELEPHONE, COMPAGNIE) PASSE (NUMF, NUMC, NUMS, DATE_DEB, DATE_FIN, HORAIRE, PRIX) SALLE (NUMC, NUMS, TAILLE_ECRAN, NBPLACES) Les attributs NUMF, NUMP, NUMA, NUMC, NUMS sont des identifiants uniques (clés primaires) pour respectivement : FILM, PERSONNE, ACTEUR, CINÉMA, SALLE. Un de ces attributs utilisé comme attribut d une autre relation est une clé étrangère qui renvoie à la clé primaire de la relation correspondante, par exemple dans DISTRIBUTION, NUMF renvoie au NUMF de FILM et est défini sur le même domaine. De plus, les attributs REALISATEUR dans FILM et NUMA dans ACTEUR sont définis sur le domaine des NUMP, et renvoient au NUMP de la personne correspondante. Questions : Avant de répondre aux questions sur SQL, tracer le graphe des clés étrangères comme vu en cours 1) Nom et prénom des acteurs qui ont joué Gavroche dans les différentes versions des «Misérables» avec les dates correspondantes. 2) Donner le nom et le prénom des réalisateurs qui ont joué dans au moins un de leurs propres films. Sous la forme d une requête SQL non imbriquée.
3) Même question sous la forme de requête(s) imbriquée(s) 4) Pour chaque film de Spielberg (titre, année), donner le total des salaires des acteurs. Correction : 1) 2) 3) 4) SELECT P.PRENOM, P.NOM, F.ANNEE FROM PERSONNE P, DISTRIBUTION D, FILM F WHERE P.NUMP = D.NUMA AND D.ROLE = Gavroche AND D.NUMF = F.NUMF AND F.TITRE = Les misérables SELECT DISTINCT P.PRENOM, P.NOM FROM PERSONNE P, FILM F, DISTRIBUTION D WHERE P.NUMP = F.REALISATEUR AND F.NUMF = D.NUMF AND D.NUMA = F.REALISATEUR SELECT DISTINCT PRENOM, NOM FROM PERSONNE WHERE NUMP IN ( SELECT REALISATEUR FROM FILM WHERE (REALISATEUR, NUMF) IN ( SELECT NUMA, NUMF FROM DISTRIBUTION ) ) SELECT F.TITRE, F.ANNEE, SUM (D.SALAIRE) FROM FILM F, DISTRIBUTION D, PERSONNE P WHERE F.NUMF = D.NUMF AND F.REALISATEUR = P.NUMP AND P.NOM = Spielberg GROUP BY F.TITRE, F.ANNEE