Formation AGPME – 12 janvier 2009 La fonderie des Chevriers Objectif : proposer une situation contextualisée où le système d’information d’une organisation est présenté et analysé ; utiliser une interface homme-machine pour mettre à jour la base de données de l’organisation ; obtenir des résultats synthétiques en réalisant des requêtes SQL sur cette base ; observer et comprendre la sortie obtenue au format XML. Contexte La partie droite de ce document : donne des indications sur le questionnement fournit des références aux programmes d’enseignement propose des réponses aux questions posées 1. Entreprise La fonderie des Chevriers est une société anonyme spécialisée dans le moulage et le coulage de pièces en aluminium, en cuivre ou en alliages divers. Elle fabrique par exemple des carters de moteurs, des pompes haute pression pour des moteurs à haute performance, des pompes à huile pour l’aviation, etc.. 2. Activité Le contexte s’appuie sur la partie : T.3.2.2 Préparation et suivi des actions de formation pour mettre en œuvre les savoirs : S53.2 Le système d’information et sa représentation S53.3 Les bases de données S81.2 La modélisation des documents et l’interface Homme Machine (IHM) La totalité de son activité concerne la sous-traitance. Les industries automobile et aéronautique représentent 90% de son chiffre d’affaires. Elle réalise les 10% restant avec des commandes souvent ponctuelles émanant de grands projets : construction d’un pont, d’un viaduc, etc. A5.3 Gestion de l’information 3. Système d’information Entreprise à l’origine familiale, la fonderie des Chevriers a connu une rapide expansion au cours des années 1980-2000 qui ont vu la vulgarisation des moyens de transport mais aussi la montée en puissance de ces technologies. Cette augmentation de l’activité de fonderie s’est accompagnée d’une restructuration de son organisation : pour atteindre les objectifs définis au niveau stratégique, un nouveau système d’information a été mis en place afin d’assurer au mieux les interactions entre le système de pilotage et le système opérant. 1.1 Ressources humaines L’entreprise emploie actuellement environ 85 personnes réparties entre : production : 65 ouvriers très qualifiés ; recherche et développement, conception et étude : 11 personnes ; gestion des clients et des fournisseurs : 5 personnes ; direction, assistance de gestion: 4 personnes. Le directeur de l’entreprise décide des objectifs stratégiques ; il est aidé dans sa tâche par un directeur adjoint chargé plus spécialement des aspects techniques et commerciaux. Deux assistantes de gestion prennent en charge le suivi de différents processus et participent à la gestion opérationnelle de l’entreprise. 1.2 Processus Différents processus sont actuellement exploités : gestion clients, gestion fournisseurs, gestion du stock, recherche et étude en collaboration avec les clients, processus assurance qualité de la production 1.3 Système informatique Les processus mis en œuvre exploitent des données stockées dans une base de données centralisée à laquelle les salariés peuvent accéder avec des autorisations différenciées. Cette base de données est hébergée par une machine serveur spécifique. Jean-Philippe Pujol 1 / 17 S53.2 Le système d’information et sa représentation Définition et caractéristique du système d’information Notions de flux d’information, de processus, d’architecture matérielle et logicielle Représentations du système d’information Formation AGPME – 12 janvier 2009 L’exploitation et le partage des informations sont réalisés par l’utilisation d’un réseau local Ethernet ayant la possibilité d’accès à internet pour les échanges avec les clients et les fournisseurs ou la simple recherche d’informations. Dans le département production, vingt postes servent au pilotage des machines numériques et cinq postes sont réservés à un usage général. La direction utilise deux portables connectés en wifi. Pour assurer la sécurité, un pare-feu filtre les données transitant entre le réseau local et internet. Placé dans une zone démilitarisée (DMZ), un serveur web permet un partage d’informations avec les clients et les fournisseurs. Les clients peuvent ainsi par exemple vérifier l’état d’avancement de leur commande en temps réel grâce à un accès à ce serveur. Il présente aussi aux visiteurs les activités de l’entreprise, ses performances et ses potentialités. En local, il permet le partage d’informations entre les différents salariés. Ressources pour produire les résultats attendus en A5.3 Une description de tout ou partie du système d’information de l’organisation diagramme des flux d'informations, diagramme événements-résultats, schéma de l'architecture matérielle et logicielle, schéma relationnel L’expression des besoins d’information de certains acteurs Une situation contextualisée de communication écrite et ou orale faisant apparaître un besoin ou un dysfonctionnement dans la collecte, le traitement et la diffusion de l’information Figure 1 : architecture du réseau 1.4 Évolution L’entreprise connaît depuis quatre ans une baisse légère mais continue de son résultat. Dans un contexte général de baisse d’activité consécutif à la chute des commandes de sous-traitance qu’elle assurait, la direction s’interroge sur la stratégie à tenir. Une diminution d’effectifs réduirait certes les frais salariaux mais laisserait l’outil de production partiellement inutilisé. Hors dans le domaine de la fonderie, les fours doivent fonctionner 24h sur 24 et 365 jours par an : arrêter un four entraine obligatoirement sa destruction. La direction s’oriente donc vers une diversification de son activité en s’intéressant à un secteur qu’elle n’avait jusque là pas abordé : celui de l’industrie nucléaire. Ce secteur est demandeur de produits de très haute qualité, élaborés selon des normes très strictes avec un contrôle extrêmement rigoureux et la demande est très stable dans le temps du fait des remplacements obligatoires de matériels au-delà d’un certain âge. L’expérience acquise dans les technologies de pointe, comme par exemple l’aviation, permet à la direction de penser qu’elle a les moyens humains et technologiques de répondre à la demande. Jean-Philippe Pujol 2 / 17 Formation AGPME – 12 janvier 2009 Après étude de faisabilité, il s’avère qu’une production de robinets de sécurité pourrait être envisagée (dans cette industrie, un robinet est une pièce pouvant peser jusqu’à 300 kg). Il y a cependant un impératif : celui de l’assurance qualité exigée par le client, qui passe par l’emploi de personnes spécifiquement formées et sensibilisées. 4. Mise en œuvre de l’évolution Pour pouvoir devenir fournisseur habilité, la fonderie doit être en mesure de produire une liste des personnes ayant suivi avec succès les stages de formation et d’habilitation. Celles-là seules pourront intervenir dans la nouvelle ligne de conception-fabrication, ce qui bien entendu permettra de pérenniser leur emploi. Chaque participation à un stage procure un certain niveau de qualification et d’habilitation. Cette liste fera partie intégrante du dossier de la fonderie en tant que fournisseur autorisé et devra être communiquée au donneur d’ordre. Le directeur travaille avec le directeur adjoint et une des assistantes de gestion, Mme Bernard, à la conception d’un processus ayant pour objectif final d’établir une liste de personnes habilitées et qualifiées. Il décide ensuite de confier à Mme Bernard le soin de mettre en place et de surveiller ce processus en rendant régulièrement compte de son état d’avancement. Le processus de formation se décompose en différentes activités : recherche d’un organisme de formation habilité ; proposition de formations au personnel ; inscriptions volontaires aux formations ; suivi des formations ; gestion des résultats des formations : seules les personnes ayant satisfait aux critères d’évaluations peuvent recevoir une habilitation, à condition de donner leur accord final ; élaboration et transmission de la liste des personnes habilitées. Les échanges d’informations entre le domaine concerné (la gestion des formations) et les acteurs externes sont schématisés à l’aide d’un diagramme de flux : A5.3 Gestion de l'information Limites et recommandations pédagogiques L’étudiant doit savoir représenter l’échange de flux d’information, entre le domaine de gestion étudié et les acteurs concernés, à travers un diagramme de flux. L’outil ayant été utilisé pour la réalisation de ce schéma montre les acteurs externes sous forme de rectangles et le domaine sous forme d’un rectangle aux coins arrondis. Usuellement, on trouve une représentation des acteurs sous forme d’ellipses La numérotation chronologique des flux permet de mieux cerner la dimension temporelle de l’activité. Figure 2 : diagramme des flux Jean-Philippe Pujol 3 / 17 Formation AGPME – 12 janvier 2009 Un diagramme événement-résultat montre les activités des différents acteurs. Chaque activité est déclenchée par un événement déclencheur et produit un événement résultat. A5.3 Gestion de l'information Limites et recommandations pédagogiques Le traitement de l’information, à travers son organisation entre différents postes de travail, est représenté à l’aide d’un diagramme événements-résultats. Il décrit les événements déclencheurs ainsi que les résultats produits en fonction d’éventuelles règles d’émission. L’outil ayant été utilisé pour la réalisation de ce schéma montre les événements sous forme de cercles et les activités sous forme de rectangles : c’est une façon usuelle de représenter ces objets Il ne faut pas confondre la notion d’événement résultat avec la notion de document. Figure 3 : diagramme événement-résultat Jean-Philippe Pujol 4 / 17 Formation AGPME – 12 janvier 2009 Mise en œuvre pédagogique La mise en œuvre du processus est simulée en salle de travaux pratiques. On ne s’intéresse ici qu’à l’implémentation de la dernière activité du processus : la gestion des habilitations. On considère donc que les premières activités sont déjà réalisées et que les formations ont été suivies par certains salariés. Certaines formations ont été faites voici quelques mois, la dernière formation vient juste de s’achever. Question 1 Schéma modifié du diagramme de flux : Dans un premier temps vous analysez le système d’information puis dans un deuxième temps vous exploitez les données à partir de votre poste de travail. 1. Analyse et modification du processus Le processus initialement élaboré ne donne pas totalement satisfaction : après avoir suivi le stage de formation, certains salariés n’acceptent pas de travailler dans ce nouveau secteur, bien que l’évaluation faite par le formateur leur en permette l’accès. En effet, les contraintes imposées par la sécurité et l’exigence de qualité sont beaucoup plus draconiennes que celles auxquelles ils sont habitués et ils choisissent de ne pas jouer la carte de l’évolution. La direction décide donc que l’inscription sur la liste d’habilitation ne sera faite que pour les salariés ayant donné leur accord après avoir fait bien entendu l’objet d’une évaluation positive. Le processus de gestion des formations doit prendre en charge cette règle de gestion. 1 2 Travail à faire Proposez la modification du diagramme des flux prenant en compte cette évolution. Proposez en conséquence une nouvelle schématisation du processus. Question 2 Modification de l’activité de gestion des habilitations prenant en compte l »avis du salarié concerné : 2. Cas d’utilisation Les salariés ont donné leur avis suite aux premières formations déjà réalisées et ces avis sont déjà enregistrés dans la base de données. Mme Bernard vient de recevoir les évaluations du formateur concernant la dernière formation qui vient de s’achever. Elle demande aux salariés concernés d’exprimer leur avis. Vous allez jouer consécutivement deux rôles sur votre poste de travail : celui d’un salarié saisissant son avis ; celui de Mme Bernard exploitant les données enregistrées. Bien que la notion de cas d’utilisation ne fasse pas partie du programme, cette schématisation permet de mieux comprendre les services qu’une application informatique rend à ses utilisateurs. Figure 4 : cas d’utilisation Jean-Philippe Pujol 5 / 17 Formation AGPME – 12 janvier 2009 3. Analyse des données Dans un premier temps vous observez et analysez sur table les éléments qui vous sont communiqués. 3.1 Architecture technologique et logicielle Une machine serveur héberge : un serveur SQL gérant la base de données ; un serveur web permettant un accès à la base via son navigateur. Sur son poste de travail, chacun dispose : d’un navigateur ; d’un outil de requêtage graphique permettant de réaliser des requêtes SQL d’interrogation. L’étude des composantes technologiques du réseau est faite en classe de 1ère STG (communication). Le schéma proposé correspond à une architecture classique d’une salle de TP. La machine serveur peut être une machine quelconque du réseau, par exemple le poste du professeur. A7.1 Participation à la gestion des risques informatiques S71.1 Le réseau local et le réseau étendu Limites et recommandations pédagogiques Les composantes matérielles et logicielles du réseau sont étudiées sans excès de technicité. Il ne s’agit pas de former un administrateur de réseau mais un utilisateur sachant déterminer les lieux de stockage des données sur le réseau, les collaborateurs autorisés à y accéder ainsi que les moyens d’accès. L’étude est limitée aux services communément employés par les utilisateurs pour réaliser leurs tâches : connexion du poste au réseau local, authentification, accès aux ressources du réseau interne et externe, utilisation des applications partagées par l’entreprise. Figure 5 : architecture du réseau exploitée en salle de TP Sur la machine serveur, on dispose d’un paquet déjà installé, WampServer 2.0 qui comporte : un serveur Web Apache ; un interpréteur PHP ; un serveur de base de données MySQL. Le logiciel d’interrogation MySQL Query Browser est installé sur chaque poste de travail. Il se trouve dans Démarrer/Tous les programmes Dans votre espace de travail vous disposez de différents fichiers mis à disposition : - fonderie.doc : le présent fichier - SqlParlExemple.doc : une documentation sur le langage SQL au travers de divers exemples - liste.css, liste.dtd, liste.xml : fichiers utiles pour la partie XML Jean-Philippe Pujol 6 / 17 L’architecture logicielle permet de comprendre où se situent les programmes que l’on fait exécuter à partir de son poste de travail. L’installation de la salle a été faite par le professeur. Elle est assez simple : - une machine serveur sur laquelle est déployé WampServer - sur chaque poste une copie de MySQL Query Browse et une copie des fichiers fournis Formation AGPME – 12 janvier 2009 3.2 Base de données On vous fournit le schéma relationnel graphique de la base de données utilisée. Il s’agit d’un extrait simplifié de la base réelle de l’entreprise. A5.3 Gestion de l'information Limites et recommandations pédagogiques L’étude des bases de données s’appuie sur le modèle relationnel dont l’étudiant doit comprendre la logique de construction (tables, champs, clés, index). L’organisation des informations à l’intérieur d’une base obéit à des règles normalisées de construction (notion de dépendance fonctionnelle directe et unique et notion de contrainte d’intégrité référentielle). L’objectif n’est pas de construire un modèle relationnel de données mais de savoir le lire et le modifier pour répondre à de nouveaux besoins du système d’information de l’entreprise (ajout de champ(s) dans de(s) table(s) existante(s), et ajout de table(s)). Figure 6 : schéma relationnel de la base de données 3 Travail à faire Vous apportez quelques réponses aux questions qui sont posées par votre collègue : combien de tables comporte la base de données ? quelle est la clé primaire de la table Stage ? quelle est la clé primaire de la table Participer ? quels champs sont en dépendance fonctionnelle directe avec le champ Salarie.id ? comment est traduite la contrainte d’intégrité référentielle entre Stage et Societe ? Question 3 Pour mieux comprendre l’architecture des données, on vous propose des extraits significatifs des tables : Figure 7 : Table Société (vue complète du contenu) Figure 8 : Table Stage (vue complète du contenu) (la date est au format AAAA-MM-JJ ; la durée est exprimée en jours de stage ; le code du stage montre son type Q=qualité, S=sécurité, T=test) Jean-Philippe Pujol 7 / 17 La base de données contient quatre tables (Salarie, Participer, Stage, Societe) La clé primaire de la table Stage est le champ code La clé primaire de la table Participer est le couple (idSalarie,codeStage) Le champ Salarie.id est source de dépendance fonctionnelle vers nom et prenom (la connaissance de id entraine celle de nom et de prenom qui sont des buts de dépendance fonctionnelle) La contrainte d’intégrité référentielle entre les tables Stage et Societe se traduit par l’existence d’une clé étrangère refSociete dans Stage qui référence le champ ref dans Societe Formation AGPME – 12 janvier 2009 Figure 9 : Table Salarie (vue partielle du contenu) A5.3 Gestion de l'information Limites et recommandations pédagogiques L'exploitation de la base de données est faite à l'aide de requêtes SQL, de formulaires, d'états. La pratique du langage SQL se limite à l’interrogation des données (SELECT). Il faut privilégier la compréhension des opérations mises en œuvre (projection, sélection, jointure, tri, calculs, regroupement) plutôt que la maîtrise parfaite du langage. Figure 10 : Table Participer (vue partielle du contenu) (une valeur NULL représente une absence de donnée ; l’évaluation du formateur est une note entre 0 et 5 ; l’avis personnel peut prendre les valeurs O ou N signifiant Oui ou Non) 4 Travail à faire Vous apportez quelques réponses aux questions qui sont posées par votre collègue : par quelle société est organisé le stage dont le code est S01 ? quels sont les stages auxquels a participé le salarié dont l’identifiant est 3 ? quelle est la moyenne des évaluations de l’employé 3 ? est-ce que le salarié 1 a bien saisi son avis concernant le stage T02 ? 4. Activités sur poste 4.1 Présentation Vous travaillez individuellement sur votre poste. Vous accédez à une base de données centralisée hébergée par une machine serveur. Vous notez le numéro de votre poste de travail. Remarque : il n’y a qu’une seule base de données partagée à laquelle chacun accède. Pour simplifier, les accès ne sont pas sécurisés au moyen d’un mot de passe. 4.2 Saisie des données Votre numéro de poste de travail correspond au rang du salarié dont vous allez tenir le rôle. On vous propose la liste des participants au stage T02 dont on vient de recevoir les évaluations ; vous allez saisir votre avis au moyen d’une interface. Jean-Philippe Pujol 8 / 17 Question 4 (ces questions sont l’occasion privilégiée de montrer les notions de sélection, projection et jointure faites naturellement en lisant les tables et qui pourront ensuite être mises en œuvre dans des requêtes SQL) Le stage S01 est organisé par la société 2 (on fait une sélection sur la table) qui se nomme « Office central d’enseignement en nucléaire » (on fait une jointure avec la table Societe puis une projection) Le salarié 3 a participé aux stages Q01, Q02 et S01 (sélection) qui se nomment « Qualité… », « Qualité… » et « La sécurité… » (jointure puis projection) La moyenne des évaluations de l’employé 3 est (4+5+2)/3=3.66 (on montre la possibilité de réaliser des calculs agrégatifs sur des champs de table : fonction avg()) Le salarié 1 n’a pas encore saisi son avis concernant le stage T02 puisque la valeur du champ correspondant (sélection puis projection) vaut NULL (c'est-à-dire vide ; à ne pas confondre avec la valeur mathématique nulle=0) Formation AGPME – 12 janvier 2009 La liste des participants est projetée : A8.1 Communication globale Limites et recommandations pédagogiques En relation avec l’acquisition transversale de compétences bureautiques et informatiques prévue dans les différentes activités, l’approche des IHM doit permettre les échanges avec des informaticiens (par exemple sur la base d’un cahier des charges) et des propositions d’adaptation ou de création des modèles de documents et des formulaires produits par les logiciels bureautiques. Les fonctions avancées des logiciels bureautiques sont définies au regard des gains de productivité qu’ils permettent. Elles sont étudiées et mises en œuvre dans le cadre de situations professionnelles relatives aux activités A1 à A8. … Figure 11 : copie d’écran (liste des participants au stage T02) La colonne de gauche (Numéro) correspond à votre poste de travail ; vous notez l’identifiant situé sur la même ligne (colonne Identifiant). L’utilisation de ces IHM peut être l’occasion d’observer la feuille de style qui lui est associée et éventuellement d’y apporter des modifications pour constater les effets. Vous utilisez votre navigateur et vous invoquez la page : http://nomServeur/fonderie/saisieIdent.htm (où vous remplacez nomServeur par le véritable nom du serveur qui vous est communiqué) Vous observez une interface de saisie… Figure 12 : copie d’écran (saisie d’un identifiant) …dans laquelle vous saisissez l’identifiant du stagiaire dont vous prenez l’identité et le code de la formation (ici T02). Jean-Philippe Pujol Sur tableur et sur SGBDR, les formulaires sont mis en œuvre pour l’affichage et la saisie des données. La conception de formulaires a pour objectif d’offrir une interface ergonomique et un contrôle des valeurs saisies. L’utilisation est limitée aux logiciels bureautiques et ne fait pas appel à la programmation. 9 / 17 Formation AGPME – 12 janvier 2009 Après avoir validé, vous arrivez devant un autre formulaire correspondant au stagiaire concerné, par exemple… Figure 13 : copie d’écran (saisie d’un avis) …dans lequel vous saisissez votre avis (soit un O pour oui, soit un N pour non). La validation permet d’enregistrer cette saisie. L’observation de la liste des participants qui est toujours projetée et actualisée permet de voir toutes les saisies qui ont été réalisées. Synthèse On souhaite schématiser les données échangées entre les différents objets concernés par cette saisie : Question 5 Figure 14 : échanges utilisateur – base de données 5 Travail à faire Complétez le schéma de la figure 14 en indiquant la chronologie des flux échangés entre l’utilisateur et la base de données. Jean-Philippe Pujol 10 / 17 Formation AGPME – 12 janvier 2009 4.3 Requête SQL exemple A5.3 Gestion de l'information La figure 11 (liste des participants au stage T02) présente des données extraites de la base. Ce qui nous intéresse ici est le contenu et non pas la présentation (couleurs, police de caractères, etc.). On s’occupe dans un premier temps de l’identifiant, du nom et du prénom. Ces trois données pourraient être extraites de la base de données à l’aide d’une requête SQL : SELECT id, nom, prenom FROM Salarie On observe ici la forme syntaxique de la requête : derrière le mot SELECT on indique les données que l’on souhaite obtenir (projection) derrière le mot FROM on indique la table où elles sont enregistrées (on se reportera au schéma de la base –Figure 6- pour interpréter ou construire une requête) En fait, on voit apparaître plusieurs colonnes dont la provenance n’est pas limitée à une seule table. La requête pourrait donc se construire ainsi : SELECT id, nom, prenom, evaluationFormateur, avisPersonnel FROM Salarie, Participer WHERE id = idSalarie On observe ici que : derrière le mot FROM on indique la liste des tables qui sont nécessaires on indique une condition de jointure derrière le mot WHERE pour faire correspondre les tables concernées par la requête Dans l’application, la véritable requête se limite à la seule présentation des participants au stage T02, par ordre alphabétique de noms. La requête réelle est donc la suivante : SELECT id, nom, prenom, evaluationFormateur, avisPersonnel FROM Salarie, Participer WHERE id = idSalarie AND codeStage = 'T02' ORDER BY nom On observe ici que : on spécifie une condition de sélection (codeStage='T02') ajoutée à la requête à l’aide du mot AND on indique le critère de tri derrière le mot ORDER BY Une requête SQL précise donc ce que l’on veut obtenir (Quoi), les tables contenant ces données (Où) et les opérations à réaliser pour les obtenir (Comment). Remarque : les données de type texte sont délimitées par le caractère apostrophe ; il existe plusieurs types d’apostrophes (droite, courbe, …) et celle qui est fournie par Word n’est pas admise par les serveurs de base de données. Jean-Philippe Pujol 11 / 17 Limites et recommandations pédagogiques L'exploitation de la base de données est faite à l'aide de requêtes SQL, de formulaires, d'états. La pratique du langage SQL se limite à l’interrogation des données (SELECT). Il faut privilégier la compréhension des opérations mises en œuvre (projection, sélection, jointure, tri, calculs, regroupement) plutôt que la maîtrise parfaite du langage. Formation AGPME – 12 janvier 2009 4.4 Réalisation de requêtes SQL Sur votre poste de travail, vous jouez maintenant le rôle de l’assistante de gestion Mme Bernard. 4.4.1 Connexion au serveur de bases de données Vous lancez l’exécution du programme MySQL Query Browser qui vous invite dans un premier temps à établir une connexion au serveur de bases de données. Vous utilisez l’identité de Mme Bernard (username=bernard), vous indiquez le nom du serveur (qui vous est communiqué par l’enseignant ou le responsable réseau) et vous précisez le nom de la base de données (Default Schema) qui est utilisé (ici elle s’appelle FONDERIE) : La connexion du poste de travail au serveur via le réseau local se fait en fournissant les trois éléments fondamentaux usuels : - nom du serveur (ou adresse IP - nom de l’utilisateur (auquel sont attachés des droits spécifiques) - mot de passe (pour la sécurité ; ici il n’y a pas de mots de passe pour simplifier) Figure 15 : connexion au serveur MySQL (vous saisissez le nom du serveur qui vous est communiqué) 4.4.2 Observation de requêtes SQL Dans l’interface de saisie de requêtes qui apparaît après la connexion, vous saisissez puis exécutez la requête : SELECT * FROM Societe (le symbole * représente tous les champs qui existent dans la table) L’interface propose différents éléments : - une zone pour saisir des requêtes SQL - une zone pour observer la réponse du serveur - une zone faisant appariatre les erreurs éventuelles retournées par le serveur - la ou les bases de données avec leurs tables et leurs champs (on ne peut voir que les bases et les tables pour lesquelles on dispose d’autorisations d’accès) - un zone avec la possibilité d’obtenir une aide syntaxique Figure 16 : interface de requêtage Un clic sur l’icône permet de faire exécuter la requête. Vous observez le résultat de son exécution dans la partie basse de la fenêtre. Jean-Philippe Pujol 12 / 17 Formation AGPME – 12 janvier 2009 Vous exécutez maintenant successivement les requêtes suivantes : R1 SELECT nom, libelle, dateDebut FROM Societe, Stage WHERE ref = refsociete R2 SELECT nom, prenom, evaluationFormateur FROM Salarie, Participer WHERE id = idSalarie AND id = 38 R3 SELECT libelle, objectif FROM Stage, Societe WHERE ref = refSociete AND adresse like ‘%Paris%’ R4 SELECT nom, prenom FROM Salarie, Participer WHERE id = idSalarie AND codeStage = ‘T01’ AND avisPersonnel = ‘O’ R5 SELECT code, libelle, count(*) FROM Participer, Stage WHERE codeStage = code GROUP BY code, libelle R6 SELECT avg(evaluationFormateur) FROM Salarie, Participer WHERE id = idSalarie AND id = 38 R7 SELECT id, nom, prenom, sum(duree) FROM Salarie, Participer, Stage WHERE id = idSalarie AND codeStage = code GROUP BY id, nom, prenom R8 SELECT id, nom, prenom, sum(duree), avg(evaluationFormateur) FROM Salarie, Participer, Stage WHERE id = idSalarie AND codeStage = code GROUP BY id, nom, prenom ORDER BY 4 desc, 5 asc Jean-Philippe Pujol 13 / 17 Formation AGPME – 12 janvier 2009 R9 R10 6 7 SELECT libelle, dateDebut FROM Stage WHERE dateDebut >= '2008-12-1' AND adddate(dateDebut,duree) <= '2008-12-31' Question 6 Travail sur machine. Analyser a requête et sont résultat à partir des tables afin de comprendre le mécanisme. On pourra utilement mettre l’accent sur les opérations de sélection, projection et jointures utilisés. SELECT id, nom, prenom FROM Salarie, Participer WHERE id = idSalarie GROUP BY id, nom, prenom HAVING avg(evaluationFormateur) > 3.5 Travail à faire Vous saisissez et exécutez chaque requête en analysant son résultat d’exécution. (vous faites particulièrement attention au caractère apostrophe servant de délimiteur des chaînes de caractères) À quels besoins de gestion correspondent respectivement ces requêtes ? (en d’autres termes, quel est le besoin qui nécessite leur exécution ?) Question 7 R1 : nom des sociétés, libellé et date de début de tous les stages proposés R2 : nom, prénom et évaluations du salarié n°38 R3 : libellés et objectifs des stages proposés par des sociétés domiciliées à Paris R4 : nom et prénom des salariés ayant participé au stage T01 et ayant donné un avis positif R5 : code libellé et nombre de participants aux différents stages R6 : moyenne des évaluations du salarié 38 R7 : id, nom, prénom et nombre total de jours de formation de chaque salarié ayant participé à des stages (remarquer que les salariés n’ayant participé à aucun stage ne sont pas retournés) R8 : id, nom, prénom , nombre total de jours de formation et moyenne des évaluations de chaque salarié, par ordre décroissant de durée (critère majeur) et croissant de moyenne (critère mineur) R9 : libellé et date de début des stages qui se sont déroulés en décembre 2008 (on ne tient pas compte des jours de week-end dans les dates de fin) R10 : id, nom et prénom des salariés ayant une moyenne d’évaluation supérieure à 3.5 Afin de mesurer l’intérêt de chaque stage, Mme Bernard souhaite connaitre la moyenne des évaluations des formateurs pour chacun des stages. Elle réalise la requête suivante qui retourne un résultat qui ne lui donne pas tout à fait satisfaction : SELECT libelle, avg(evaluationFormateur) FROM Stage, Participer GROUP BY libelle 8 Travail à faire Pour quelle raison n’obtient-elle pas le résultat escompté ? Proposez une solution. SELECT libelle, avg(evaluationFormateur) FROM Stage, Participer WHERE codeStage = code GROUP BY libelle Synthèse Une requête SQL d’extraction de données est construite sur le modèle : SELECT [colonnes à projeter] FROM [tables nécessaires] WHERE [conditions de jointures et de sélections] On peut préciser un critère de tri avec la clause ORDER BY suivie du nom de la colonne concernée (ou de son rang dans la projection). On réalise des groupements permettant l’emploi de fonctions agrégatives : count(), min(), max(), avg(), etc. avec la clause GROUP BY. On peut appliquer des critères de sélections sur des groupements avec la clause HAVING. Jean-Philippe Pujol Question 8 La moyenne est la même pour tous les stages, ce qui est surprenant. Il manque une condition de jointure dans la requête : 14 / 17 Formation AGPME – 12 janvier 2009 4.4.3 Question 9 Création de requêtes SQL Mme Bernard souhaite obtenir d’auters résultats en interrogeant la base de données. Vous concevez ces requêtes en vous appuyant sur les exemples fournis puis vous les exécutez. Travail à faire 9 Requêtes demandées : - Objectif du stage Q01 - Salariés (id, nom et prenom) ayant participé à des stages qualité (code commençant par la lettre Q) - Salariés (id, nom et prenom) ayant participé à des stages dont la durée est supérieure à 5 jours - Salariés (id, nom et prenom) et libellé des stages auxquels des salariés ont obtenu une évaluation supérieure ou égale à 4 mais ont donné un avis négatif 4.5 Liste des personnes habilitées Mme Bernard doit transmettre la liste des personnes habilitées à la suite du stage T02. Les avis ont été saisis et elle peut donc maintenant obtenir les données nécessaires au moyen d’une requête SQL 4.5.1 Génération des données SELECT objectif FROM Stage WHERE code='Q01' SELECT distinct id, nom, prenom FROM Salarie, Participer WHERE id = idSalarie AND codeStage like 'Q%' SELECT id, nom, prenom FROM Salarie, Participer, Stage WHERE id = idSalarie AND code = codeStage AND duree >5 SELECT id, nom, prenom, libelle FROM Salarie, Participer, Stage WHERE id = idSalarie AND code = codeStage AND evaluationFormateur >= 4 AND avisPersonnel = 'N' À la suite d’un stage, on applique la règle de gestion suivante : une personne est habilitée si elle a obtenu une évaluation du formateur supérieure ou égale à 3 et si elle a donné un avis positif. Question 10 10 Travail à faire Construisez la requête SQL permettant d’obtenir la liste alphabétique (id, nom, prenom) des personnes habilitées suite au stage T02. Après avoir obtenu le résultat fourni par la requête, Mme Bernard génère un fichier XML au moyen de la commande appropriée. Elle peut ainsi communiquer cette liste à l’organisme client. Figure 17 : exportation des données au format XML Jean-Philippe Pujol 15 / 17 SELECT id, nom, prenom FROM Salarie, Participer WHERE id = idSalarie AND codeStage = 'T02' AND evaluationFormateur >= 3 AND avisPersonnel = 'O' ORDER BY nom Formation AGPME – 12 janvier 2009 On vous montre ici un extrait du fichier XML obtenu à partir d’avis saisis : A8.1 Contribution à l'efficacité, à la cohésion et à la motivation (Communication interne) S81.2 La modélisation des documents et l’interface Homme Machine (IHM) structuration XML, association d’une feuille de style à un fichier XML, schéma de définition L’association de feuille de style se fait par l’utilisation d’un fichier .css Le schéma de définition est donné par le fichier .dtd Figure 18 : extrait du fichier XML généré Question 11 Travail à faire En observant le contenu de ce fichier XML et en le comparant avec les données retournées par la requête, répondez aux questions suivantes : - quelle balise délimite une ligne retournée par la requête SQL ? - quelle balise délimite les données d’une personne ? - quelle balise délimite le document ? - comment connaît-on le nom du champ de table auquel correspond une donnée ? - connaît-on le nom de la table dont proviennent les données ? - le document XML contient-il des informations correspondant à la présentation des données ? 11 La ligne retournée apparaît dans la fenêtre des résultats de MySQL Query Browser. Chaque ligne correspond à une personne. Elle est délimitée dans le fichier XML par les balises <row> et </row> Chaque donnée d’une personne est délimitée par les balises <field> et </field> Le document complet est inclus entre les balises <ROOT> et </ROOT>. Il est important de constater qu’un arbre a toujours une et une seule racine. Le nom d’un champ apparaît sous la forme d’un nom d’attribut. Un attribut est généralement utilisé pour fournir des données techniques qui ne sont pas nécessaires dans une présentation finale. Le nom de la table source est inconnu. On ne sait d’ailleurs pas si les données proviennent d’une seule table. 4.5.2 Gestion de la présentation Le document XML a été communiqué au client. En réponse celui-ci renvoie un fichier récapitulatif liste.xml de toutes les habilitations qui lui ont été transmises. Le client utilise un format XML qui lui est propre. On vous fournit un extrait de ce document qui est fourni dans votre espace de travail : Figure 19 : extrait du fichier XML fourni Jean-Philippe Pujol 16 / 17 Il n’y a pas d’information sur la présentation : seulement des données. La couche présentation est indépendante du document XML : c’est la grande différence avec le HTML. Formation AGPME – 12 janvier 2009 Vous ouvrez ce document avec un navigateur. 12 Travail à faire Chacune des balises est précédée d’un symbole (+ ou -) qui permet de l’ouvrir ou de la fermer. Vous manipulez les différents symboles afin de comprendre l’imbrication des balises. Représentez schématiquement l’imbrication des différentes balises que vous rencontrez. Question 12 LISTE (une seule) STAGE (plusieurs) LIBELLE (un seul) PERSONNE (plusieurs) NOM (un seul) PRENOM (un seul) Un document XML est aussi appelé un arbre, car il se représente une structure arborescente. La structure rencontrée ici peut se schématiser de la façon suivante : Figure 20 : structure arborescente (la valeur indiquée entre parenthèses indique si la donnée n’apparaît qu’une fois =1 ou plusieurs fois =n) Vous ouvrez maintenant ce document avec un éditeur de texte ; vous observez les premières lignes du document : Figure 20 : en-tête du fichier XML fourni La première ligne indique qu’on utilise le codage de caractère UTF-8 (permettant en particulier l’emploi des caractères accentués). La deuxième ligne fait référence à un fichier liste.dtd qui vous est aussi fourni et que vous ouvrez avec un éditeur de texte. Ce fichier sert à spécifier la structure que doit obligatoirement respecter le fichier de données XML. 13 Travail à faire On vous fournit deux indications quant au contenu de ce fichier de description : Le symbole + signifie « plusieurs » Le type #PCDATA correspond au type chaine de caractère Analysez ce fichier et comparez son contenu à la structure arborescente de la figure 20. Le couple de fichiers fournis par le client, liste.xml et liste.dtd, représentent les données et leur structure. La présentation reste à la discrétion de l’utilisateur. Mme Bernard utilise une feuille de style liste.css qui lui permet de présenter à son goût la liste des salariés habilités. Cette feuille de style liste.css vous est fournie. Pour l’associer au document XML, vous ajoutez la ligne ci-dessous entre les lignes 1 et 2 du fichier XML : <?xml-stylesheet type="text/css" href="liste.css"?> 14 15 Travail à faire Insérez la ligne à l’aide d’un éditeur de texte. Enregistrez le fichier XML ainsi modifié et observez sa présentation quand on l’ouvre avec un navigateur. Ouvrez avec un éditeur de texte le fichier liste.css et identifiez le rôle de chacun des composants qui y figurent. Jean-Philippe Pujol 17 / 17 Question 13 <!ELEMENT LISTE (STAGE+)> On déclare que l’élément LISTE contient plusieurs éléments STAGE <!ELEMENT STAGE (LIBELLE, PERSONNE+)> On déclare que l’élément STAGE contient un élément LIBELLE et plusieurs éléments PERSONNE <!ELEMENT LIBELLE (#PCDATA)> On déclare que l’élément LIBELLE est de type chaîne <!ELEMENT PERSONNE (NOM, PRENOM)> On déclare que l’élément PERSONNE contient un élément NOM et un élément PRENOM <!ELEMENT NOM (#PCDATA)> On déclare que l’élément NOM est de type chaîne <!ELEMENT PRENOM (#PCDATA)> On déclare que l’élément PRENOM est de type chaîne Remarque : on déclare la structure du document en partant de la racine et en allant vers les feuilles. Question 14 Seules les données utiles apparaissent avec une présentation personnalisée Question 15 LIBELLE {display:block ; margin-left:10pt ; font-size:18pt ; color:black} NOM { margin-left:20pt ; font-size:14pt ; color:blue} PRENOM { margin-left:20pt ; font-size:14pt ; color:blue} PERSONNE {display:block} Chaque fois qu’une de ces balise est rencontrée dans le document XML, elle est remplacée par le style qui lui est affecté. On peut observer que la balise STAGE n’est pas gérée : elle n’apparaît donc pas. La balise PERSONNE est assignée à un saut de ligne (display :block)