Mael Le Clech MERISE PARTIE n 1 Cours Méthode Merise Base de données Page 1 sur 12 Base de données relationnelle = banque d information (l information donnée étant définie par le système d entreprise), sert à gérer les informations nécessaires à un système. Première base de données créée par IBM en 1964 suite à un besoin de gérer des informations, elle a été créée par des groupes de mathématiciens. Le SQL a été créé à partir des mathématiques ensemblistes. Avant pour gérer les données on utilisait des fichiers. Ils utilisaient chacun une structure différente, il n y avait donc pas de norme. Fonctionner sous forme de fichier pouvait poser des problèmes de MAJ et/ou de doublons. Alors que dans une base de données la donnée est stockée une et une seule fois! Une donnée = l information la plus petite non décomposable et utile pour le système. Pour qu une donnée soit unique dans la base de données, on doit pouvoir la retrouver de la façon la plus simple possible, on utilise pour cela Pour créer les bases de données et de savoir ce dont on a besoin au sein d une entreprise, des Français ont créé une méthode d analyse des systèmes d information qui s appelle la méthode Merise aux alentours de 1970. Aujourd hui, toutes les méthodes d analyse qui existent sont plus ou moins basées sur Merise. CREATION D UNE BASE DE DONNEES MCD = Modèle conceptuel de données, il sert à schématiser les besoins du système d information. Avant de créer en lui-même le MCD, il faut d abord renseigner un Dictionnaire de données. On le renseigne en demandant aux personnes concernées ce dont elles ont besoins, on se base également sur l existant informatique et papier Il s établie aussi en fonction de nos propres idées car effectivement en parlant avec les interlocuteurs de l entreprise, on peut faire des propositions par rapport à notre visions des choses. Lors de la création du premier jet du dictionnaire des données, il faudra trouver les informations qui serviront d identifiant. Ensuite, il faudra créer des entités qui représentent le regroupement des données concernant une même idée (ex : code client nom - prénom donnera naissance à l entité client). A partir du moment où on a trouvé un identifiant, cela donnera lieu à la création d une entité. Dans l exemple du type : «Code Client Nom Client Prénom client», le nom et le prénom sont déterminés par l identifiant, le nom et le prénom sont donc en dépendance fonctionnelle avec l identifiant. Attention, lorsque l on parle d identifiant, on est bien au niveau du MCD et non de la base de données, où on parlerait de clef primaire. Dans une entité, chaque information s appelle un attribut. Et l ensemble des attributs et l identifiant permettent la création de l entité. Si par exemple lors de la conversation avec notre interlocuteur il nous dit qu un client est géré par un représentant, il faut bien pouvoir lier les informations, pour cela, il faut faire des associations. Par exemple, il faudra créer une association entre «Client» et «Représentant» qui s appellera «Gérer» par exemple. Pour finaliser le MCD, il faut poser les cardinalités.
Page 2 sur 12 Exercice : - Des étudiants effectuent différents stages au sein d organismes dont on conserve le numéro, nom, nom de la personne à contacter, numéro de téléphone. - Un stage réalisé par un étudiant peut être de type A ou B. - Un stage commence et se termine à des dates propres à chaque étudiant. - Différents étudiants peuvent faire un ou plusieurs stages au sein d un organisme. - Pour chaque étudiant on connaît le numéro de la carte étudiant, le nom, le prénom et le numéro de téléphone. Voici le MCD correspondant à cette situation : Dictionnaire de données : STAGE ETUDIANT ORGANISME ET_NUMCART ET_NOM ET_PRENOM ET_NUMTEL ORG_NUM ORG_NOM ORG_CONTACT ORG_NUMTEL ST_NUM ST_TYPE ST_DATEDEB ST_DATEFIN ETUDIANT ET_NUMCART ET_NOM ET_PRENOM ET_NUMTEL ORGANISME ORG_NUM ORG_NOM ORG_CONTACT ORG_NUMTEL 1,n 1,n Réaliser 1,1 STAGE ST_NUM ST_TYPE ST_DATEDEB ST_DATEFIN 1,1 Effectuer
Page 3 sur 12 OU ETUDIANT ET_NUMCART ET_NOM ET_PRENOM ET_NUMTEL Effectuer ORGANISME 1,n ST_TYPE 1,n ST_DATEDEB ST_DATEFIN ORG_NUM ORG_NOM ORG_CONTACT ORG_NUMTEL Une association réflexive = lorsque l on présente une notion de hiérarchie. Par exemple, on veut gérer une généalogie, pour se faire on va utiliser une seule entité qui est PERSONNE. 0,n PERSONNE ID_PERS NOM_PERS Enfant de 2,2
Page 4 sur 12 Exercice avec association réflexible : Un grand magasin conserve le numéro, le nom, la date de naissance, l adresse, le salaire, le numéro du supérieur hiérarchique, le code du rayon ou le secteur, les activités de chacun de ses employés. Chaque employé n a qu un seul supérieur hiérarchique, n appartient qu à un seul rayon mais peut avoir plusieurs activités (ex vendeur caissier étalagiste ). A chaque code de rayon ou de secteur correspond un libellé (ex jouets, vêtements ). Un rayon ou un secteur est situé dans un étage. Sur un même étage il peut y avoir plusieurs rayons ou secteurs. Chaque employé exerce une activité depuis une certaine date. Voici le MCD correspondant à cette situation :
Page 5 sur 12 Exercice : Une société dispose de centres délocalisés dans différentes régions de France. La société est organisée en services (recherches, administration, vente). Chaque service est installé dans une et une seule agglomération, mais une agglomération peut recevoir plusieurs services. Chaque service est référencé par un code service. Les numéros d employés, nom, prénom, salaire, commission de chacun des employés de cette société sont stockés. L historique des fonctions de chacun des employés de cette société sont stockés. Cet historique permet de connaître chacun des postes, des services et des dates par lequel un employé est passé. Voici le MCD correspondant à cette situation :
Page 6 sur 12 Exercice : Une société propose à ses clients de concevoir et monter ses meubles soi mêmes, une liste de codes de composants et description de ces composants (tiroirs, portes, fonds). Chaque composant peut être de plusieurs couleurs, mais suivant sa couleur le composant est d un prix différent. Ainsi une porte rouge est plus chère qu une porte blanche. Certains composants comme les vis sont d une couleur. Une composition propre à un client référencée par un numéro, attribuée à une date donnée, éventuellement définie par un intitulé est constituée d un ou de plusieurs composants, chacun de ces composants est présent en quantité variable. La composition constitue le meuble conçu par le client. Chaque client est référencé avec un ensemble de caractéristiques qui permettent de l identifier et le contacter. Voici le MCD correspondant à cette situation :
Page 7 sur 12 Exercice : RESTO Voici le MCD correspondant à cette situation : Utilisation Ternaire entre RECETTE, MENU et TYPE
Page 8 sur 12 ACCESS Tous les énoncés suivants concernent la base ACCESS «Gestion de temps» (voir clef usb). Note : Une requête SQL avec «SELECT * FROM.» est moins efficace que de lister tous les champs «SELECT NOM, PRENOM, AGE FROM.» Sur access pour créer une requette : Sélectionnez les tables a afficher Maintenant a vous de créer votre requête
Page 9 sur 12 Exemple pour Afficher les noms des clients et les villes triés par ville. Pour voir le résultat en SQL ou même pour directement écrire la requête en SQL : Pour voir le résultat :
Page 10 sur 12 EXERCICE : Req1 = Afficher les numéros, les noms des clients et les villes triés par le numéro en ordre décroissant. SELECT clients.numcli, clients.raisoccli, clients.villecli FROM clients ORDER BY clients.numcli desc; Req2 = Afficher tous les clients qui habitent le département «92» SELECT clients.numcli, clients.raisoccli, clients.villecli, clients.cpcli FROM clients WHERE clients.cpcli BETWEEN "92000" AND "92999"; Req3 = Afficher tous les clients dont le collaborateur n est pas «JPE» SELECT clients.raisoccli FROM clients WHERE clients.codcolcli<>"jpe"; Req4 = Afficher la liste des missions démarrant après le 31/12/2000 SELECT NumMis, LibelleMis FROM missions WHERE DateDebutMis > #12/31/2000#; Req5 = Afficher les habitants du 92 et du 94. SELECT clients.raisoccli FROM clients WHERE CPCli BETWEEN "92000" AND "92999" OR CPCli BETWEEN "94000" AND "94999"; Req6 = Afficher tous les temps de plus d une heure depuis le 01/01/2001 SELECT NumMisTemps, DateTemps, DureeTemps FROM temps WHERE DureeTemps > 1 AND DateTemps >=#01/01/2001#; Req7 = Afficher tous les clients habitant EVRY et de tous les clients qui ont le collaborateurs «VPA» SELECT RaiSocCli, VilleCli FROM clients WHERE VilleCli LIKE "Evry*" AND CodColCli = "VPA";
Page 11 sur 12 Req8 = Afficher le nom des collaborateurs, leur taux horaire HT et TTC SELECT collaborateurs.nomcol, collaborateurs.prixhorairecol, ([PrixHoraireCol]*1.196) & " " AS PrixHoraireTTC FROM collaborateurs; Req9 = Afficher le numéro de client, le numéro de mission et le nombre de jour écoulés depuis le début de chaque mission. SELECT missions.nummis, missions.numclimis, (Date()-missions.DateDebutMis) AS ["Nombre de jours :"] FROM missions; Req10 = Compter le nombre de client par département SELECT LEFT(CPCli,2) AS DEPARTEMENT, COUNT(NumCli) AS NOMBRECLIENT FROM clients GROUP BY LEFT(CPCli,2); LEFT(CPCli,2) signifie les 2 chiffre en partant de la gauche Req11 = Afficher la date de la première mission effectuée pour chaque client SELECT NumCliMis, MIN(DateDebutMis) AS ['Premiere mission'] FROM missions GROUP BY NumCliMis;
Page 12 sur 12 Req12 = Temps passé par mission SELECT NumMisTemps, SUM(DureeTemps) AS DUREETOTALE FROM temps GROUP BY NumMisTemps; Req13 = Temps en moyenne pour la durée des missions par collaborateur SELECT CodColTemps, AVG(DureeTemps) FROM temps WHERE YEAR(DateTemps) = 2000 GROUP BY CodColTemps;