Licence d informatique 2011/2012 DS - Introduction aux Bases de Données Relationnelles décembre 2011 Seul document autorisé : une feuille A4 manuscrite avec votre résumé du cours. Dans les premiers deux exercices, vous travaillerez avec la base d un institut de recherche national, avec ses laboratoires de recherche où travaillent des chercheurs. Chaque laboratoire est dirigé par un chercheur. Pour un chercheur, nous connaissons son nom, son année de naissance an, son grade et son salaire sal. Les chercheurs forment des équipes. Chaque équipe est rattachée à un laboratoire de recherche, qui lui offre des locaux, et est gérée par un responsable, qui est un des chercheurs de l équipe. La relation membre indique la participation d un chercheur à une équipe. Les chercheurs peuvent participer à plusieurs équipes à la fois, ou zéro. Dans le schéma de la base, les clés primaires sont soulignées différemment des clés étrangères. laboratoire(l id :integer,nom :varchar(20),anneecreation :integer, dir id :integer ) chercheur( c id :integer,nom :varchar(50), an :integer,grade :integer, sal :float ) equipe( e id :integer, nom :varchar(40), lab id :integer, resp id :integer ) membre( e id :integer, c id :integer ) Exercice 1 : Cohérence de la base Question 1.1 : Supposez que la base ait été crée sans les contraintes d intégrité référentielle, et qu on ait fait les insertions de la page 4 de ce document. Ecrivez des requêtes pour vérifier la validité des contraintes d intégrité de la base. Pour chaque requête, indiquez son résultat. Question 1.2 : Corrigez les éventuelles erreurs à l aide des instructions INSERT/UPDATE/DE- LETE selon le cas. Justifiez le choix fait pour chaque modification. Question 1.3 : Maintenant, supposez que les contraintes référentielles aient été ajoutées à la base. Proposez suffisamment d insertions pour juger leur bon fonctionnement. Les contraintes de clés primaires et clés étrangères n offrent pas de réponses à tous les problèmes liés à la cohérence de la base de données. La valeur d un attribut peut déterminer immédiatement la valeur d un autre attribut au sein d une table. Nous appelons ceci une dépendence directe (DD), et illustrons par la situation suivante : Le grade d un chercheur détermine son salaire. Observez que dans l instance actuelle de la base, c.à.d. avec les insertions de la dernière page de ce document, tous les chercheurs du grade cinq gagnent 45000 euros. Question 1.4 : De manière générale, combien de salaires distincts doit-on trouver pour un grade, pour que la DD soit respectée? Question 1.5 : Ecrivez une requête pour vérifier le respect de la DD pour les chercheurs du grade 2. Indiquez le résultat renvoyé par votre requête. Question 1.6 : Modifiez les enregistrements qui ne respectent pas la DD entre grade et salaire. Utilisez une requête UPDATE. On considère que la première valeur rencontrée est celle à retenir pour le reste (fiez-vous à l ordre des enregistrements obtenues dans les INSERTS). Question 1.7 : Ecrivez une (seule) requête pour vérifier le validité de la DD pour tous les chercheurs de la base, pour toutes les instances possibles de la base. Indiquez comment interpréter le résultat de votre requête. Question 1.8 : Proposez une autre contrainte portant sur la base, en français, concernant une propriété qui ne peut être éxprimée par une contrainte référentielle. Si vous connaissez la syntaxe, donnez également la version SQL.
2 Licence d informatique 2011/2012 : DS - Introduction aux Bases de Données Relationnelles Exercice 2 : Requêtes Question 2.1 : En SQL : Identifiants et noms des chercheurs qui sont membres de l équipe nommée Intégration de Données. Question 2.2 : En RA : Identifiants et noms des chercheurs qui sont membres de l équipe nommée Intégration de Données, mais qui ne sont pas en même temps membres de l équipe nommée Mesures éléctriques. Question 2.3 : En SQL, trouver les noms et salaires de chercheurs sans équipe. Question 2.4 : En TRC, trouver les noms et salaires des chercheurs appartenant à deux équipes. Question 2.5 : En SQL, trouver les noms des responsables d équipe. Question 2.6 : En RA, trouver les noms des responsables d équipe de moins de 35 ans. Question 2.7 : En TRC, trouver les noms des responsables d équipe, qui sont plus jeunes que le labo hébergeant leur équipe. Question 2.8 : En SQL, donner par équipe, le nom de l équipe, le nom du responsable d équipe, le nombre de membres de l équipe, et la somme des revenus des membres de l équipe. Question 2.9 : En SQL, trouver les identifiants de responsables d équipe, pour les équipes où personne sauf le responsable gagne plus de 44000 euros. Exercice 3 : Modélisation Considérez le diagramme conceptuel en UML de la Figure?? ci-dessous, qui représente des musées. Chaque musée possède des oeuvres. Une oeuvre est realisée par un ou plusiers artistes. Des oeuvres peuvent représenter 0,1 ou plusieurs personnages. Figure 1 Modèle conceptuel pour des musées. Réalisez les actions suivantes : Question 3.1 : Ajoutez des cardinalités aux associations entre Musée et Oeuvre, entre Oeuvre et Artiste et, finalement, entre Oeuvre et Personnage. Veillez à utiliser la notation UML pour les cardinalités. Question 3.2 : A partir du diagramme conceptuel, appliquer l algorithme de transformation du modèle conceptuel en modèle logique, et créer le modèle logique correspondant. Question 3.3 : Ecrivez en SQL le script de création des relations que vous avez obtenues dans l étape précédente. Question 3.4 : Ajoutez les contraintes aux relations (clé primaire, intégrité referentielle, nullité, unicité). Question 3.5 : Proposez des commandes d insertion qui permettront de tester les contraintes imposées.
Licence d informatique 2011/2012 : DS - Introduction aux Bases de Données Relationnelles 3 Exercice 4 : Questions de connaissance et compréhension Question 4.1 : Si vous deviez réécrire une contrainte de PRIMARY KEY en utilisant d autres contraintes, comment le feriez-vous? Question 4.2 : Si vous avez une association n-n dans un modèle conceptuel entre deux relations A et B, comment la traduisez-vous en modèle logique? Question 4.3 : Quels critères sont pris en compte au cours de l optimisation d une requête SQL par un SGBD? Question 4.4 : Discuter brièvement les différences entre le langage HTML et le langage XML. Question 4.5 : Discuter de façon concise les différences entre le modèle de données relationnel et le modèle de données XML. Question 4.6 : Indiquez quels fragments de code XML de la Figure 2 ci-dessous sont corrects ou incorrects. Pour les fragment incorrects, indiquez la raison. Pour les fragments corrects, dessinez les arbres qui correspondent au document. Fragment A <cde> </ cde> Fragment B PAPANOEL Fragment C <abc /> <abc /> Fragment D <abc i d= 7 > nothing Figure 2 Fragments de documents XML Question 4.7 : Ecrivez un document XML décrivant une personne née le 15 décembre 1993, avec l identifiant 101, dont le prénom est Nicole, le sexe femme, l occupation étudiante. L imbrication des éléments de votre document XML doit être comme dans l arbre de la Figure 3 : Figure 3 Représentation du document XML par un arbre. Question 4.8 : Ecrivez une requête en utilisant un langage de requête XML pour récuperer l année de naissance de la personne de la question précédente. Comment s appelle le langage de requête XML que vous utilisez?
4 Licence d informatique 2011/2012 : DS - Introduction aux Bases de Données Relationnelles Insertions pour la base de l institut de recherche (Exercice 1) insert into chercheur values(111, Mario Mancini,1970,2,25000.0); insert into chercheur values(222, Enrico Fiore,1970,2,28000.0); --insert into chercheur values(333, Franco Cantu,1980,3,35000.0); insert into chercheur values(333, Franco Cantu,1980,3,35000.0); insert into chercheur values(444, Valeria De Cristofaro,1966,5,45000.0); insert into chercheur values(555, Luigi Guinci,1960,1,18000.0); insert into chercheur values(666, Evo Guinci,1960,2,25000.0); insert into chercheur values(777, Elisa Foa,1955,4,29000.0); insert into chercheur values(888, Gugliermo Marconi,1969,5,45000.0); insert into chercheur values(999, Giuseppe Verdis,1960,2,25000.0); insert into chercheur values(1111, Alan Turing,1912,10,500000.0); ---insert into laboratoire values(1, Ada Lovelace,1995, Via dei Fori Imperiali, ROMA,1111); insert into laboratoire values(1, Ada Lovelace,1995,1111); insert into equipe values(1, Mesures electriques,1,111); insert into equipe values(2, Integration de donnees,1,222); insert into equipe values(3, Calcul combinatoire,1,333); insert into equipe values(4, Telecomunication,1,444); insert into equipe values(5, Informatique theorique,1,555); insert into equipe values(6, Biochimie informatique,1,666); insert into equipe values(7, Genie Logiciel,1,777); insert into equipe values(8, Technologies XML,1,888); --insert into equipe values(9, Intelligence bidon,3,123); insert into membre values(1,111); insert into membre values(1,222); insert into membre values(1,555); insert into membre values(2,222); insert into membre values(2,333); insert into membre values(2,123); insert into membre values(2,555); insert into membre values(3,333); insert into membre values(3,444); insert into membre values(3,777); insert into membre values(4,444); insert into membre values(4,888); insert into membre values(4,22882); insert into membre values(4,111); insert into membre values(5,555); insert into membre values(5,333); insert into membre values(5,222); insert into membre values(5,111); insert into membre values(5,444); insert into membre values(6,666); insert into membre values(7,777); insert into membre values(7,111); insert into membre values(7,444); insert into membre values(8,888);
Licence d informatique 2011/2012 : DS - Introduction aux Bases de Données Relationnelles 5 insert into membre values(8,555); insert into membre values(8,222);