Travail nécessaire après l interrogation numéro 3 Durée 3h Le but de ce document est de vous montrer quel est le travail nécessaire à faire après une interrogation afin de tirer profit d un bonne ou d une mauvaise note et de mettre toutes les chances de votre coté pour la prochaine interrogation. Ce document est plein de fautes d orthographe je m en excuse. J espère qu il vous servira tout de même de support de travail pour rattraper votre note lors de l interrogation de la prochaine séance. Sylvie Delaët 1 LECTURE DE L ENONCE La première étape d une interrogation est la lecture de l énoncé. Vous devez savoir rapidement le type de chose qu on vous demande et ce que vous saurez faire ou ne pas faire avec facilité. Faites la lecture et vérifiez que vous tirez de cette lecture au moins les information suivantes : Ici, le texte introductif parle de glaces. Le schéma relationnel est nouveau, je vais devoir l étudier. On fait une différence entre les cornets (respectivement parfums) disponibles (requête 1 : Disponibilité) et les cornets (respectivement parfums) utilisés (requête 2 : Réalité) dans la base de données. On ne me demande que des requêtes. On va me demander des prix minimum et maximum d attributs (requête 1 et 2), le prix de revient d une glace, ce qui est un calcul complexe à étudier lors de mon étude du schéma relationnel (requête 3 : Bénéfice), une énumération de tarifs (requête 4 : liste de tarifs) enfin un nombre de parfums et un nombre de boules (requête 5 : Etude de glace), il faudra compter. 2 COMMENTAIRE SUR LE SCHEMA RELATIONNEL : Un producteur de glace répertorie les glaces qu il produit dans une base de données. Pour lui une glace est toujours constituée d un cornet et de boules Les boules étant éventuellement de différents parfums. Voici un extrait du schéma relationnel de sa base de données. CORNET GLACE COMPOGLACE PARFUM NumCornet NomCornet PrixRevient NumGlace NomGlace NumCornet PrixVente NumParfum NumGlace NbBoule NumParfum NomParfum PrixRevientParBoule La seconde étape de lecture d un texte d interrogation est de comprendre le schéma relationnel pour le connecter à la réalité modélisée de manière visuelle par exemple. Ceci doit être fait en début d interrogation et très vite, il semble que cela n est pas été fait pour la majorité d entre vous. Page 1/5 commentaire interrogation écrite numéro 3 version du 03/12/02
En effet le sujet parle de glace mais des schémas qui modélisent des glaces il y en a beaucoup. Une glace peut avoir un seul parfum, une boule par parfums ou n boules par parfums. Le nom d une glace peut dépendre ou ne pas dépendre de son cornet etc C est le schéma relationnel (TD1, TP1) vous indique qu elle est la réalité du modèle étudié. Ici le schéma relationnel est constitué de 4 tables. La table CORNET représente un cornet et son prix de revient. Visuellement le contenu de la table CORNET est par exemple une affiche où sont inscrits des prix de revient : Cône 1 MégaCube 2 Pot 2 Le contenu ci dessus se modélise par exemple : NumCornet NomCornet PrixRevient 5 13 27 Pot Cône MégaCube La table PARFUM représente par exemple des bacs à glace avec dessus une inscription qui indique le prix de revient de chaque boule. 2 1 2 Vanille 1 Fraise 1 Pistache 2 Mangue 3 A ce stade (de même c est fait ci avant que pour la table CORNET) un exemple de contenu de la table PARFUM peut être intéressant à écrire sur un brouillon. (à vous de faire) La table GLACE possède une clef primaire simple NUmGLACE. Une glace est donc entièrement déterminée par son numéro. C est NUmGLACE qui indique quels sont son nom, son prix de vente et le numéro de son cornet. La table COMPOGLACE associe de manière unique (clef primaire double) un numéro de parfum et un numéro de glace. Cette association est renforcée par l information du nombre de boules. Comme pour la table COMPOBOITE où chaque ligne indique le nombre d exemplaires d un chocolat dans une boite, chaque ligne de la table COMPOGLACE indique le nombre de boules d un des parfums contenu dans une glace. Une glace peut alors contenir plusieurs boules d un même parfum. Une glace peut contenir plusieurs parfums. Un parfum peut être contenu dans plusieurs glaces. Exemples possibles de glaces : Page 2/5 commentaire interrogation écrite numéro 3 version du 03/12/02
Le prix de revient d une glace est tout naturellement le prix de revient de son cornet plus le prix de revient de chacun de ses parfums. Le prix de revient d un parfum pour une glace étant le nombre de boules de parfum dans cette glace multiplié par le prix de revient de la boule. Pour la glace ci contre le prix de revient est alors de (2+ 3*1+1*2+2*1)= 9 car elle contient un cornet Megacube à 2, trois boules vanilles à 1 une boule pistache à 2 et deux boules fraises à 1. Pour chacune des phrases ci-dessus vous avez du faire pendant la lecture une référence au schéma relationnel. Si ce n est pas le cas refaites la lecture en étudiant le schéma relationnel. De même vous avez du écrire pour ce travail post-interrogation le contenu de la table COMPOGLACE pour l exemple des glaces au dessus. Ceci vous permet de trouver rapidement des exemples pertinents lors des interrogations futures. 3 DISPONIBILITE Indiquer le nombre de cornets disponibles dans la base de donnée, ainsi que le prix minimum et le prix maximum de revient d un cornet. Qu est ce qu un cornet disponible dans la base de données? La lecture du texte révèle qu il y a des cornets disponibles et des cornets utilisés dans la base de données. Les cornets disponibles sont donc ceux de la table CORNET, les utilisés sont ceux qui figurent dans la table GLACE. Si la compréhension n est pas directe, vous pouvez étudier votre jeu d essai personnel et vous rendre compte que le cornet «pot» (respectivement le parfum «mangue») est disponible mais n est pas utilisé dans ce jeu d essai de la base de données. On veut donc compter le nombre de cornets de la table CORNET (une ligne par cornet) connaître le minimum et le maximum des prix de revient de ses cornets. La requête est : SELECT COUNT(*) As «Nb de cornets dans la base de données», MIN(PrixRevient) «Prix de revient minimal par cornet», MAX(PrixRevient) As «Prix de revient maximal par cornet» FROM CORNET ; 4 REALITE Indiquer le nombre de cornets utilisés pour une glace de la base de données, ainsi que le prix minimum et le prix maximum de revient des cornets utilisés. Ici on s intéresse aux cornets utilisés c'est-à-dire aux cornets qui figurent dans la table GLACE. Certains apparaîtront sur plusieurs lignes car ils sont utilisés par plusieurs glaces. Il ne suffit pas de compter les lignes de GLACE mais de compter les lignes différentes de la table Glace pour l attribut NumCornet( c'est-à-dire Count(DISTINCT NumCornet)). Par ailleurs, On veut le prix de revient minimum et maximum d un de ces cornets. Une jointure avec la table cornet est alors nécessaire. La jointure vue en cours ne conserve que les cornets de la table GLACE. Ce qui donne la requête suivante : SELECT Count(Distinct NumCornet) As «Nb de cornets utilisés pour une glace», MIN(PrixRevient) «Prix de revient minimal par cornet utilisé», MAx(PrixRevient) As «Prix de revient maximal par cornet utilisé» FROM CORNET C, Glace G Where G.NumCornet=C.NumCornet; Page 3/5 commentaire interrogation écrite numéro 3 version du 03/12/02
5 BENEFICE Pour la glace numéro 5, quelle est la différence entre son prix de vente et le prix de revient de ces ingrédients (on indiquera également le nom de la glace)? Le nom de la glace 5 comme son prix de vente figure dans la table GLACE. Il faut faire une sélection sur le numéro 5. Pour le prix de revient d une glace, l étude préalable du problème a révélé qu il faut disposer à la fois du prix de revient de son cornet, du nombre de boules de chacun de ses parfums et du prix de revient par boule de chacun de ses parfums. Le prix de revient du cornet figure dans la table CORNET. Le nombre de boules figure dans la table COMPOGLACE, Le prix de revient par boule figure dans la table PARFUM. Il faut donc une jointure sur les quatre tables et une sélection des lignes de cette table résultante où NumGlace = 5. Voici la table résultante, il faut ensuite étudié si on peut calculer le prix de revient sur cette table. SELECT * FROM CORNET C, GLACE G, COMPOGLACE CG, PARFUM P WHERE G.NumCornet=C.NumCornet AND C.NumGlace=CG.NumGlace AND CG.NumParfum=P.NumParfum AND NumGlace =5 Supposons que la glace 5 est celle dessinée çi dessus. Le résultat de cette jointure est alors : 27 MegaCube 2 5 Cube Sénégalais 27 19 100 5 3 100 Vanille 1 27 MegaCube 2 5 Cube Sénégalais 27 19 101 5 1 101 Pistache 2 27 MegaCube 2 5 Cube Sénégalais 27 19 102 5 2 100 Fraise 1 Le numéro de la glace (5), le nom de la glace (Cube Sénégalais), Le prix de vente (19 ) et le prix de revient de son cornet sont disponibles sur chaque ligne. Mais pour calculer le prix de revient de la glace, il faut faire : prix de revient du cornet plus (somme des prix de revient par boule de parfum multiplier par le nombre de boules du parfum dans la glace). Ce qui se traduit littéralement par PrixRevient+SUM(PrixRevientParBoule*NbBoule) sur cette table. Il y a donc des attributs et des agrégats au même niveau dans cette expression. Or la seule façon de faire apparaître des attributs et un agrégat au même niveau est que les attributs soient des attributs d un GROUP By. Ce qui donne la requête suivante : SELECT NomGlace, PrixVente-(PrixRevient+SUM(PrixRevientParBoule*NbBoule)As «différence entre prix de vente et prix de revient des ingrédients» FROM CORNET C, Glace G,Compoglace CG, Parfum P WHERE G.NumCornet=C.NumCornet AND C.NumGlace=CG.NumGlace AND CG.NumParfum=P.NumParfum AND NumGlace =5 GROUP BY NomGlace, PrixVente, PrixRevient; (le GROUP BY ne sert pas à grouper mais à afficher les attributs utiles au calcul de la différence et à l affichage su nom de la glace). 6 LISTE DE TARIFS Pour chaque glace, énumérer les prix de revient des parfums qui la composent. Page 4/5 commentaire interrogation écrite numéro 3 version du 03/12/02
C est une requête très simple, la seule difficulté réside dans le fait d afficher les bons attributs et la bonne expression : SELECT NumGlace, NomGlace, NumParfum, NomParfum, PrixRevientParBoule*NbBoule As «prix de revient du parfum» FROM Compoglace CG, Parfum P, Glace Where CG.NumParfum=P.NumParfum And C.NumGlace=CG.NumGlace; 7 ETUDES DE GLACE Pour chaque glace, référencée uniquement par son numéro, indiquer le nombre de parfums qui la composent ainsi que le nombre de boules qu elle contient. SELECT NumGlace, Count(*) As NbParfums, Sum(NbBoule)As NbBoules FROM Compoglace CG Group By NumGlace ; 8 TRAVAIL SUPPLEMENTAIRE NECEAASIRE POUR LES PERSONNES N AYANT PAS LA MOYENNE À L INTERROGATION CONSEILLE AUX AUTRES. Après la correction d une interrogation comme celle ci la première étape est de s assurer que vous avez compris la correction çi dessus et que vous sauriez refaire sans le corrigé. La seule manière de s en assurer est de refaire l interrogation dans les mêmes conditions. Ensuite il serait bon de refaire l autre version de l interrogation (une version parle beaucoup de parfums l autre parle beaucoup de cornets. Consultez vos collègues). Enfin vous pouvez vous posez des questions du type : Ai-je fini de passer sur machine toutes les requêtes des TP 4 et 5? Ai-je fini de passer sur machine toutes les requêtes des TD sans avoir le corrigé sous les yeux? Ai-je repris toutes les requêtes du cours? Enfin vous pouvez essayer de nouvelles requêtes de votre cru sur cette base, attention toutefois, vous ne pouvez pas faire en SQL pour le moment tout ce qui est humainement possible comme interrogation sur cette base. Exemple de requêtes possibles pour aller plus loin. 1. Lister les glaces à la vanille. 2. Combien il y a-t-il de glace à la vanille? 3. Quelles sont les glaces qui contiennent de la vanille et du chocolat? 4. Quelles sont les glaces qui contiennent de la vanille ou du chocolat? 5. Quelles sont les glaces qui contiennent au moins 3 parfums? 6. Quelles sont les glaces qui contiennent au moins 3 boules? 7. Lister toutes les recettes de glace à quatre boules qu on pourrait créer avec 1 cornet disponible et au plus deux parfums existants dans la base de données. 8. Lister les prix de revient de chaque glace de la base de donnée. 9. Quel est le plus petit prix de revient pour une glace. (difficile) 10. Quelles sont les glaces qui sont vendus les moins cher? 11. Quelles sont les glaces qui reviennent le plus cher à fabriquer? (tres difficile) 12. Combien de boules au maximum sont supportées à la fois par un cornet «MegaCube»? A vous d en imaginer d autres et de voir si elle sont simples ou pas! Je peux répondre à vos questions si vous avez fait un travail écrit et lisible préalable. Page 5/5 commentaire interrogation écrite numéro 3 version du 03/12/02