La méthodologie
MERISE

Mis à jour le 12/11/2024

Cédric BRASSEUR

  • Ancien étudiant de l'Exia.cesi
  • 4 ans consultant chez Amaris, placé chez Euro Information Dev
  • Auto-entrepreneur depuis début 2020 (Création de sites web, applications mobiles & formateur)

Et vous ?

  • Nom, prénom
  • Etudes réalisées 
  • Connaissances en dév
  • Autres infos appréciées

Plan du cours

  • La méthodologie MERISE
    • ​Introduction & intérêts
    • Le dictionnaire de données
    • Les dépendances fonctionnelles
    • Le MCD
      • ​Les cardinalités
    • MLD
      • Règles de conversions
    • Vers le MPD
    • MCT / MOT (Les compléments)
    • Merise 2.0
    • Merise avancé (héritages,...)
  • Evaluation

Merise

Objectifs de la semaine

  • Appréhender la méthodologie de modélisation de base de données avec MERISE
     
  • Exercices de modélisations en suivant la méthodologie
     
  • Connaître les requêtes SQL de création de base de données

Introduction

Base de données

Les structures de stockage de données existantes

Toute entreprise a besoin de sauvegarder ses données.

Il existe plusieurs structures de sauvegardes : 

  • Les structures JSON et XML,
  • Le SGBD(R) et le NoSQL
  • Le modèle relationnel, entité-association et les ORM

Base de données

  • Structure permettant d'agencer et de sauvegarder des données relatives à un ou plusieurs projets
     

  • Cette structure peut être relationnelle ou non (SGBD =/= SGBDR)
     

  • Les données doivent être protégées mais accessibles en continue
     

  • Nous allons utiliser SQL Server (T-SQL) & MySQL (plus tard)

BDD

Base de données relationnelle

Les données sont liées les unes aux autres entre les tables.
Ceci permettant d'avoir des données atomiques dans les tables tout en pouvant lier ses données grâce à des jointures.

Auteur
id
...
Article
id
auteur_id
date_parution_id
Date
id
jour_nom

Modéliser sa base de données

Pour modéliser correctement sa base de données il est fortement conseillé d'utiliser une méthode de modélisation.

! MERISE !

Types de données

Il existe plusieurs types de données afin de les stocker. Ce qu'il faut comprendre c'est que le type de données défini un espace mémoire pour le stockage de cette donnée.

 

Quelques conseils :

  • Bien choisir le type, ne pas utiliser un BigInt là où un SmallInt suffit
  • Utiliser Varchar à la place de char (taille variable)
  • Stocker les données numériques non calculées en varchar (CB, numéro de téléphone,...)
  • Utiliser trim() pour les données AN
  • Utiliser une référence numérique (Enum) pour les données AN répétées (statut de commande par exemple)

Types

La méthodologie MERISE en détails

Aucun développement requis !

Merise - Késako ?

Merise est une méthodologie de modélisation de base de données relationnelles. Créé début 70’s par Hubert Tardieu, préconisé par CTI et CETE en 1978.

 

Elle se met en place à travers plusieurs diagrammes :

 

MCC

Modèle Conceptuel des Communications

MCD

Modèle Conceptuel des Données

MCT

Modèle Conceptuel des Traitements

MOT

Modèle Organisationnel des Traitements

MLD

Modèle Logique des Données

MPD

Modèle Physique des Données

Prérequis - Règles de gestion métier

  • Ensemble des règles concernant le système d’information (SI) fournie par le client / MOA,
     
  • Soit les règles sont posées à plat, soit il faut les déduire du cahier des charges avant modélisation,
     
  • Ces règles sont rarement assez claires il faut donc interroger les clients / MOA / développeurs… Et c’est souvent ce qui prend le plus de temps et provoque le plus de litiges. Petit conseil, assurez-vous toujours que le client sache bien ce qu’il veut et qu’il l’écrive (ou valide un de vos écris) dans un cahier des charges.

Prérequis - Exemple de règles

  • Pour chaque livre, on doit connaître le titre : l'année de parution, un résumé et le type (roman, bd, manga,...).
  • Un livre peut être rédigé par aucun (œuvre anonyme), un ou plusieurs auteurs dont on connaît le nom, le prénom, la date de naissance et le pays d'origine.
  • Chaque exemplaire d'un livre est identifié par une référence composée de lettres et de chiffres et ne peut être paru que dans une et une seule édition.
  • Un inscrit est identifié par un numéro et on doit connaître son nom, prénom, adresse, téléphone et adresse e-mail.
  • Un inscrit peut faire zéro, un ou plusieurs emprunts qui concernent chacun un et un seul exemplaire. Pour chaque emprunt, on connaît la date et le délai accordé (en nombre de jours).
  • Le code mnémonique : libellé désignant une donnée (titre_livre)
  • La désignation : Description de la donnée (par exemple «titre du livre»)
  • Le type de donnée :
    • A ou Alphabétique : caractères alphabétiques
    • N ou Numérique : nombre entier ou réel
    • AN ou Alphanumérique : à la fois des caractères alphabétiques et numériques
    • Date : Date..
    • Booléen : Vrai ou Faux OU 0 ou 1 (bit en SQLServer)
    • La taille : En nombre de caractères ou de chiffres. Pour une date au format AAAA-JJ-MM, on compte également les caractères, soit 10 caractères.
  • Et des remarques complémentaires

Prérequis - Définir le dictionnaire de données

Le dictionnaire de données permet de définir quelles données sont à prendre en compte dans notre base de données, c'est concrètement de l'analyse de texte à réaliser.

 

Quoi définir ?

Exercice

Définissez l’intégralité du dictionnaire de données de l’exemple de règles métier pour une bibliothèque (règles métier présentées précédemment)

  • Pour chaque livre, on doit connaître le titre, l'année de parution, un résumé et le type (roman, bd, manga,...).
  • Un livre peut être rédigé par aucun (œuvre anonyme), un ou plusieurs auteurs dont on connaît le nom, le prénom, la date de naissance et le pays d'origine.
  • Chaque exemplaire d'un livre est identifié par une référence composée de lettres et de chiffres et ne peut être paru que dans une et une seule édition.
  • Un inscrit est identifié par un numéro et on doit connaître son nom, prénom, adresse, téléphone et adresse e-mail.
  • Un inscrit peut faire zéro, un ou plusieurs emprunts qui concernent chacun un et un seul exemplaire. Pour chaque emprunt, on connaît la date et le délai accordé (en nombre de jours).

Exercice (corrigé)

Prérequis - Dépendances fonctionnelles

  • Ce sont les liens qui permettent grâce à une donnée de pouvoir en déduire une autre par relation. 

     

  • Grosso-modo, on lie les champs associés à la donnée unique et on ajoute les « clés étrangères » qui permettent leur lien (Ce que l’on appellera par la suite les cardinalités dans cette formation),

     

  • En reprenant les données du dictionnaire précédent, on peut établir les dépendances fonctionnelles suivantes :
    id_em → date_em, delai_em, id_i, ref_e
    id_i → nom_i, prenom_i, rue_i, ville_i, cp_i, tel_i, tel_port_i, email_i, date_naissance_i
    ref_e → id_l
    id_l → titre_l, annee_l, resume_l, id_t, id_ed
    id_t → libelle_t
    id_ed → nom_ed
    id_a → nom_a, prenom_a, date_naissance_a, id_p

    id_p  nom_p

MCD - Modèle Conceptuel des données

Ce diagramme est le diagramme le plus important de la série, il a pour objectif de définir entités, leurs association et les cardinalités.

Les entités

Les associations

Les cardinalités

MCD - Modèle Conceptuel des données

L'un des principaux objectif de se diagramme est de prendre le temps de splitter au maximum ses données dans des entités liées.

Les cardinalités

Les types de cardinalités les plus utilisées : 

  • 0,N 
  • 1,N 
  • 0,1
  • 1,1
  • Cas spécifiques possibles mais nécessitant des règles de gestion à implémenter. (Rarement possible à paramétrer dans un outil de modélisation) Par exemple, dans les règles de métier on nous aurait dit qu’un auteur ne peut pas écrire plus de 5 livres. La cardinalité entre Auteur et Livre n’est plus 1,N mais 1,5.
    • On gère soit via le code de traitement de ces données
    • Soit via des triggers (en s’assurant que le SGBD est robuste)

MCD - Modèle Conceptuel des données

Des outils permettent de modéliser une base de données, ils sont très utiles car la plupart d'entre eux permettent de générer les MLD, MPD et scripts de création de BDD correspondant à votre MCD.

Les outils :

  • PowerAMC
  • AnalyseSI
  • JMerise
  • Looping
  • Mysql Workbench
  • DBConcept
  • ...

Je conseil Analyse SI (jar file à DL)

Exercice

Exercice (Réaliser un MCD)

 

Installez et utilisez votre logiciel de modélisation pour faire le MCD du cas en cours d’analyse (bibliothèque)

FAITES BIEN ATTENTION AUX CARDINALITES

  • Pour chaque livre, on doit connaître le titre : l'année de parution, un résumé et le type (roman, bd, manga,...).
  • Un livre peut être rédigé par aucun (œuvre anonyme), un ou plusieurs auteurs dont on connaît le nom, le prénom, la date de naissance et le pays d'origine.
  • Chaque exemplaire d'un livre est identifié par une référence composée de lettres et de chiffres et ne peut être paru que dans une et une seule édition.
  • Un inscrit est identifié par un numéro et on doit connaître son nom, prénom, adresse, téléphone et adresse e-mail.
  • Un inscrit peut faire zéro, un ou plusieurs emprunts qui concernent chacun un et un seul exemplaire. Pour chaque emprunt, on connaît la date et le délai accordé (en nombre de jours).

Exercice - corrigé

Exercice (Réaliser un MCD)

MCD - Remarques

  • Souvent, plusieurs solutions sont possibles au niveau conceptuel. Exemple, selon nos règles fonctionnelles, nous aurions pu créer une entité Type. Si un livre pouvait expressément avoir plusieurs types, on aurait été obligé de le faire cependant.
     
  • Pour que le MCD soit sémantiquement valide, toute entité doit être reliée à au moins une association. (Même si c’est discutable pour une table de settings par exemple)
     
  • On aurait pu, dans ce cas précis, conserver également une date de rentrée des livres, calculée à partir de la date d’emprunt et de la durée de celle-ci. C'est un exemple de donnée calculée dont la conservation peut permettre une optimisation. 

Pour respecter les formes normales, on aurait dû !

MLD - Modèle Logique des données

  • Le modèle logique de données (MLD) est composé uniquement de ce que l'on appelle des relations,
  • Issu des données des entités ainsi que des associations,
  • Départ de la clé primaire pour identifier sans ambiguïté les occurrences de la relation,

Exemple

Voici deux exemples (issue des entités «Edition» et « Exemplaire » de notre précédant MCD) :

  • Edition (id_ed, nom_ed)
  • Exemplaire (ref_e, id_ed#)

    Légende :
    • x : données
    • x : clef primaire
    • x# : clef étrangère

MLD - Modèle Logique des données

Règles de conversion

Cardinalités 0/1, N – 0/1, N

On parle de relation associatives  Création d’une entité / table pour l’association.

  • Rediger (id_a#, id_l#, nb_chapitres)

Finalité

Dans le cas d'associations porteuses de données, les données portées deviennent des attributs de la relation correspondante. 

MLD - Modèle Logique des données

Règles de conversion

Conversion des associations ayant au moins une cardinalité de type 1,1

 

Exemple, l'association «est né en» et des entités «Auteur» et «Pays» :

  • Pays (id_p) 
  • Auteur (id_a, nom_a, prenom_a, date_naissance_a, id_p#)

 

Finalité

 Dans ce cas :

  • L'association ne peut être porteuse de données. Ces données seraient à mettre en référence directe avec la clé primaire de la table prenant la clé étrangère. Exemple ici : nom_a est en lien direct avec id_a et n’a rien à faire dans l’association.
  • L'association doit être binaire (c'est à dire relier uniquement deux entités et pas plus).

MLD - Modèle Logique des données

Règles de conversion

Conversion des associations ayant au moins une cardinalité de type 0,1 (et dont les autres cardinalités sont de type 0,1/N)

  • Categorie (id_cat, libelle_cat)
  • Livre (id_l, titre_l, annee_l, resume_l, id_cat#)

Finalité

Rien de particulier par rapport à avant, MAIS... Il faut savoir que  Si 0 est plus régulier que 1, on utilise cette méthode à des fins d’optimisation, mais ce n’est pas la méthode classique. Nous ferions ça :

  • Categorie (id_cat, libelle_cat)
  • Livre (id_l, titre_l, annee_l, resume_l)
  • Appartenir (id_l#, id_cat#)

Exercice

Exercice (Réflexion MLDR)

 

Pour chaque entité /association, déduisez ce que donne la règle de conversion associée aux cardinalités.

Validez votre travail en utilisant la génération automatisée du MLDR via votre outil de modélisation. 

Exercice - Corrigé

Exercice (Trouver les règles de conversions)

 

Modèle logique des données que l’on déduit des cardinalités.

  • Pays (id_p, nom_p)
  • Auteur (id_a, nom_a, prenom_a, date_naissance_a, id_p#)
  • {TypeLivre (id_t, libelle_t)}
  • Livre (id_l, titre_l, annee_l, resume_l{, type_l}, id_t#)
  • Rediger (id_a#, id_l#, nb_chapitres)
  • Edition (id_ed, nom_ed)
  • Exemplaire (ref_e, id_ed#, id_l#)
  • Inscrit (id_i, nom_i, prenom_i, date_naissance_i, rue_i, ville_i, cp_i, email_i, tel_i, tel_portable_i)
  • Emprunt (id_em, date_em, delais_em, id_i#, ref_e#)

MLD - Modèle Logique des données

Règles de conversion - Cas particuliers

Associations réflexives

Association ternaire (n-aire) - Souvent utilisé pour de l'historisation

Les formes normales

Il existe différents niveaux de formes normales. Les 3 premiers niveaux de normalisations sont les plus répandus et les plus appliqués.
La classification de ces trois premiers niveaux de normalisation repose sur les dépendances fonctionnelles entre la clef primaire de la relation et ses autres attributs.

  • Pour être en première forme normale (1FN ou 1NF) : Les attributs d'une relation doivent être atomiques et doivent être en dépendance fonctionnelle avec la clef primaire de cette dernière.
  • Pour être en deuxième forme normale (2FN ou 2NF) : 1FN et que toutes les dépendances fonctionnelles entre la clef primaire et les autres attributs de la relation soient élémentaires. Autrement dit, les attributs doivent dépendre de la totalité de la clef.
  • Pour être en troisième forme normale (3FN ou 3NF) : 2FN et que toutes les dépendances fonctionnelles entre la clef primaire de la relation et les autres attributs soient directes

 Remarques :
Pour que le MLD soit valide, il faut que chacune de ses relations soit au moins en 3FN.
Si un MCD est correctement conçu et que les règles de conversion énoncées plus haut ont bien été respectées, les relations seront donc automatiquement normalisées en 3FN.

 

Les formes normales

Exemple

0FN

Les formes normales

Exemple

1FN

On applique l’atomicité et la référence à un identifiant unique

Les formes normales

Exemple

2FN

On retire les dépendances qui n’ont pas de rapport avec la clé primaire. 

0,1

Les formes normales

Exemple

3FN

On retire les dépendances de transition.

Exercice

Exercice (Appliquez les formes normales)

 

Appliquez une à une les formes normales sur cette entité.

Nous prendrons un de vos rendu pour faire le corrigé ensemble et en discuter.

MPD : Modèle Physique des données

La traduction d'un MLD conduit à un MPD qui précise le stockage de chaque donnée par son type et sa taille. C’est sur le MPD que l’on peut se permettre un certain nombre de libertés par rapport aux règles de normalisation afin d'optimiser les performances du système d'information :

  • l'ajout d'index aux tables (au minimum sur les colonnes clés primaires et clés étrangères)
  • l'ajout de colonnes calculées pour éviter des jointures coûteuses, il faut alors veiller à ce que la cohérence entre les colonnes soit respectée soit par l'utilisation de triggers, soit dans les applications clientes du système d'information
  • la suppression des contraintes d'unicité ou encore de clé étrangère (auquel cas, l'intégrité des données doit être assurée par le code client du système d'information)

Les cardinalités et associations disparaissent pour laisser place aux clés étrangères et primaires dans le modèle. Comme vu auparavant pour certaines cardinalités, une table intermédiaire est créée. Dans le MPD, ces tables sont présentes physiquement dans le modèle.

 

MPD : Modèle Physique des données

Exemple

Exercice

Exercice (Script & adaptation)

 

Créer le script de création de base de données avec votre outil de modélisation, analysez les requêtes SQL créées.
Passez votre script en base de données SQL Server (ou MySQL), adaptez en fonction des problèmes détectés lors de l’analyse. 

 

Exercice

Exercice (MCD & MLDR)

 

Un historien souhaite établir des statistiques sur des soldats de la Première Guerre mondiale. Pour chaque soldat, outre l'état-civil (nom, prénom, sexe, date de naissance, pays de naissance,…), il souhaite avoir la trace :

  • de la date de son décès si celui-ci est survenu suite aux combats 
  • des blessures reçues (type et date de la blessure, en plus de la bataille où elle a été infligée. Les batailles seront référencées dans une liste comportant le lieu, les dates de début et de fin)
  • des grades obtenus (avec les dates)
  • de l'unité de rattachement (avec les dates)

 

 

Etablir le MCD et le MLDR adéquats

+ MLDR

Exercice - Corrigé

MCT : Modèle Conceptuel des traitements

Modèle conceptuel des traitements : permet de schématiser les opérations qui sont réalisées en fonction d’événements sur le système d'information,

Schéma

MOT : Modèle Organisationnel des traitements

Modèle organisationnel des traitements c’est la représentation de l'activité étudié,

  • La représentation des traitements entre l'homme et la machine
  • La période de déroulement de chaque tache
  • Répartition de la responsabilité de ces traitements

 

C'est le même principe que pour un diagramme d'activités, sauf qu'ici on parle des traitements à faire en base de données.

Schéma

Bases DL1 vieilles bases souvent associé à la technologie COBOL en entreprise. Un modèle hiérarchique structure les données sous formes d’arbres, en opposition au modèle relationnel qui dispose les données en « ligne ».

Avant & vs Merise

Modèle réseau, dérivé direct de CODASYL (Américain)

 

Modèle hiérarchique

Merise II : Améliorations

Héritage sans contrainte

(IPersonne : Auteur / Inscrits)

Possibilité d’ajouter des contraintes que l’on doit gérer
dans le code applicatif ou par trigger également.

Schéma

Merise II : Améliorations

Contraintes entre associations

  • Inclusion
  • Exclusion 
  • Totalité
  • Egalité

 

Schéma

Exercices complémentaires

Envoyer le fichier exercice_complementaire_dictionnaire_to_mcd.docx

Exercice : Réaliser le MCD

En partant de sujet réaliste, vous devez analyser le besoin et le reformuler, créer le dictionnaire de données, puis le MCD correspondant au sujet choisi.

Cet exercice se réalise en groupe de 2 (et un groupe de 3)
Vous devrez ensuite présenter votre travail à l'oral à la promotion.

 

BONUS : Pour eux qui finissent plus vite que les autres, commencez à faire de l'UML sur le sujet (Diagrammes de cas d'utilisations, activités, séquences, classes)

Exercice : Réaliser le MCD

Démarrez votre modélisation MERISE pour le projet Cube (ressources relationnelles).

Mettez-vous dans les canaux de discussion discord par groupe et n'hésitez pas à me poser des questions.

Je peux soit venir dans le canal de discussion pour vous aider, soit vous "corriger" (plutôt vous faire des retours) votre MCD.

 

Bon courage !

Exercice : Projet Cube

La création de base de données en SQL

Installation et paramétrage de Wamp server

L'installation se fait sur toutes les OS

 

WAMP : Windows

LAMP : Mac

XAMP : Unix

Installation SQL Server 

D'abord, il faut installer l'agent SQL, puis l'interface Mangement studio.


Ou, pour une installation plus rapide, voir ici :

 

Agent SQL : https://www.microsoft.com/fr-fr/sql-server/sql-server-downloads (choisir SQL Server 2019 express)

 

Management studio Express :

https://docs.microsoft.com/fr-fr/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15

 

 

Evaluations

Partie théorique

BON COURAGE !

Evaluation

 

Vous devez répondre à un questionnaire de questions ouvertes

Partie pratique

BON COURAGE !

Evaluation

 

Réaliser toutes les tables de l'exercice précédent (Je vous donne un corrigé) avec des requêtes SQL