Module 1Concevoir une base de données
Chapitre 2 sur 9
Modéliser les données
Construire le dictionnaire de données, le graphe des dépendances fonctionnelles et le MCD avec la méthode Merise.
- ≈ 120 min
- 4 leçons
- 1 vidéo
- 3 exercices
Module 1Concevoir une base de données
Chapitre 2 sur 9
Construire le dictionnaire de données, le graphe des dépendances fonctionnelles et le MCD avec la méthode Merise.
Objectifs
Avec ce chapitre, tu sauras…
Leçon 1
Les règles de gestion du cahier des charges sont reformulées en contraintes entre les éléments de données. Elles servent à construire puis à valider les modèles.
| Règle | Énoncé de la contrainte |
|---|---|
| 1 | Un élément de l'entité ÉTUDIANT peut être associé à plusieurs éléments de l'entité SESSION. |
| 2 | Un élément de l'entité SESSION concerne un élément unique de l'entité FORMATION. |
| 3 | Un élément de l'entité FORMATION peut être associé à plusieurs éléments de l'entité SESSION. |
| 4 | Un élément de l'entité FORMATION peut être associé à un ou plusieurs éléments de l'entité SPÉCIALITÉ. |
Leçon 2
| Terme | Définition | Exemples | Contre-exemples |
|---|---|---|---|
| concept | un « objet » complexe, décomposable en plusieurs données ; il deviendra une entité | étudiant, formation, session | CIN, durée de la formation |
| donnée | une information élémentaire, non décomposable, rattachée à un concept | CIN, durée de la formation, adresse étudiant | « numéro » (sans dire de quoi) |
| valeur | une occurrence d'une donnée | « G434568 » pour le CIN d'un étudiant | « nom de la formation » (c'est une donnée) |
Leçon 3
codeForm | titreForm | dureeForm | prixForm |
|---|---|---|---|
| ID01 | Introduction au développement | 90 | 2500 |
| CCP01 | C/C++ | 30 | 3000 |
Leçon 4
| Concept | Définition | Exemple |
|---|---|---|
| entité | un objet de gestion décrit par des propriétés ; c'est aussi l'ensemble de ses occurrences | ÉTUDIANT, FORMATION |
| propriété (attribut) | une donnée élémentaire de l'entité | nomEtu, prixForm |
| identifiant | la propriété qui identifie chaque occurrence de façon unique ; elle est soulignée |
1« Casablanca » est…
2Une donnée calculée (prix TTC) dans le dictionnaire…
3A → B signifie…
4Dans le graphe des DF, une source devient…
5La cardinalité (1,1) côté SESSION signifie…
6Une association reliée par une source composée est…
7« Nom » de l'étudiant et « Nom » de la session sont…
L'essentiel du chapitre
A → B : A détermine une seule valeur de B ; non réversible ; garder les DF directes ; source composée A + B → C.Méthode
Faire un bon relevé
| Code | Désignation | Type | Taille | Observation |
|---|---|---|---|---|
numCINEtu | numéro CIN de l'étudiant | alphanumérique | 9 | identifiant de l'étudiant |
nomEtu | nom de l'étudiant | alphabétique | 30 | |
prenomEtu | prénom de l'étudiant | alphabétique | 30 | |
dateNaissEtu | date de naissance | date | ||
niveauEtu | niveau scolaire | alphanumérique | 15 | |
nomVilleEtu | ville de l'étudiant | alphabétique | 15 | |
adresseEtu | adresse de l'étudiant | alphanumérique | 90 | |
codeForm | code de la formation | alphanumérique | 9 | identifiant de la formation |
titreForm | titre de la formation | alphanumérique | 30 | |
dureeForm | durée de la formation (jours) | numérique | 3 | |
prixForm | prix de la formation (DH) | numérique | 5 | |
codeSess | code de la session | alphanumérique | 9 | identifiant de la session |
nomSess | nom de la session | alphanumérique | 30 | |
dateDebutSess | date de début de la session | date | ||
dateFinSess | date de fin de la session | date | ||
codeSpec | code de la spécialité | alphanumérique | 10 | identifiant de la spécialité |
nomSpec | nom de la spécialité | alphanumérique | 30 | |
descSpec | description de la spécialité | alphanumérique | 90 | |
typeCours | type de cours choisi à l'inscription | alphabétique | 10 | présentiel ou distanciel |
| ID02 |
| Introduction au développement |
| 90 |
| 2700 |
| BD001 | Base de données | 30 | 2500 |
| Source | Cibles |
|---|---|
numCINEtu | nomEtu, prenomEtu, dateNaissEtu, niveauEtu, nomVilleEtu, adresseEtu |
codeForm | titreForm, dureeForm, prixForm |
codeSess | nomSess, dateDebutSess, dateFinSess, codeForm |
codeSpec | nomSpec, descSpec |
numCINEtu + codeSess | typeCours |
| DF proposée | Correcte ? | Pourquoi |
|---|---|---|
numCINEtu → titreForm | non | un étudiant peut être inscrit à plusieurs formations (règle 1) |
codeForm → nomSpec | non | une formation peut appartenir à plusieurs spécialités (règle 5) |
nomEtu → titreForm | non | le nom n'est pas un identifiant, et aucun lien direct n'existe |
Vidéo · À regarder
ENMySQL Database - Full Course
freeCodeCamp.org · YouTube
numCINEtu, codeForm |
| association | un lien entre deux entités (binaire) ou plus (ternaire…) ; elle peut porter des propriétés | « est inscrit », qui porte typeCours |
| cardinalités | le nombre minimum et maximum de participations d'une occurrence à une association | (0,N), (1,1) |
| Cardinalité | Signification | Exemple |
|---|---|---|
| 0,1 | au plus une fois (participation facultative) | un employé dirige 0 ou 1 service |
| 1,1 | exactement une fois | une session concerne une et une seule formation |
| 0,N | zéro, une ou plusieurs fois | une formation peut n'avoir aucune session programmée, ou plusieurs |
| 1,N | au moins une fois | une formation appartient à au moins une spécialité |
| N° | Règle | Observation |
|---|---|---|
| 1 | Toute donnée du graphe devient une propriété. | |
| 2 | Chaque donnée source de DF devient l'identifiant d'une entité. | |
| 3 | Une DF entre deux sources se traduit par une association non porteuse. | association hiérarchique (fonctionnelle), dite CIF (contrainte d'intégrité fonctionnelle) |
| 4 | Une source composée de plusieurs données se traduit par une association porteuse des propriétés qui en dépendent. | |
| 5 | Des associations sans DF (issues des règles de gestion) peuvent exister sans figurer dans le graphe. | association non hiérarchique, dite CIM (contrainte d'intégrité multiple) |
Tableau: Concept, donnée, valeur
Entre deux groupes de données A (la source) et B (la cible), il existe une dépendance fonctionnelle (DF), notée A → B, si une valeur de A détermine une et une seule valeur de B. On dit que B dépend fonctionnellement de A.
La méthode Merise
Merise (Méthode d'étude et de réalisation informatique pour les systèmes d'entreprise) est une méthode française d'analyse et de conception de systèmes d'information, née à la fin des années 1970. Elle sépare les données et les traitements, et décrit les données à trois niveaux :
Tableau: Les concepts du MCD
À partir de ton cahier des charges (TP 1.4), réalise le dictionnaire de données contrôlé, la liste des dépendances fonctionnelles, le graphe et le MCD de la bibliothèque (adhérents, livres, exemplaires, auteurs, genres, prêts). Justifie chaque cardinalité par une phrase.
Pour chaque DF, dis si elle est vraie, fausse ou transitive (dans le centre de formation) et justifie : (1) codeForm → prixForm ; (2) prixForm → codeForm ; (3) codeSess → titreForm ; (4) numCINEtu + codeSess → typeCours ; (5) numCINEtu → codeSess.
À partir de l'analyse de l'exercice 1.3 (voitures, clients, agences, locations avec date de début et de fin), construis : le dictionnaire de données (codes, types, tailles), la liste des DF, puis le MCD avec ses cardinalités. Attention : un client peut louer plusieurs fois la même voiture à des dates différentes.
Exemple : « Le centre de formation CF Excellence offre des formations aux étudiants des villes de Tanger, Rabat et Casablanca. » CF Excellence n'est pas une donnée (c'est le nom de l'organisation qui commande le projet) ; Formation et Étudiant sont des concepts ; « nom de la ville » est une donnée de l'étudiant ; Tanger, Rabat et Casablanca sont des valeurs.
Le contenu du dictionnaire
Le code ID01 détermine un seul titre : codeForm → titreForm. La réciproque est fausse : le titre « Introduction au développement » correspond à deux codes (ID01 et ID02). Une DF n'est pas réversible.
Tableau: La liste des DF du centre de formation
Le graphe des dépendances fonctionnelles
nomEtu prenomEtu dateNaissEtu nomSess dateDebutSess dateFinSess
\ | / \ | /
numCINEtu ───────┐ \ | /
/ | \ │ └── codeSess ──┐
niveauEtu nomVilleEtu adresseEtu │ │
│ ▼ │
└──► numCINEtu + codeSess ◄──────┘ │
│ │
▼ ▼
typeCours codeForm
/ | \
titreForm dureeForm prixForm
codeSpec ──► nomSpec, descSpec (aucune DF avec codeForm)La modélisation des données : entités, attributs et relations (en anglais).
┌──────────────────┐ ┌─────────────────┐
│ ÉTUDIANT │ │ SESSION │
├──────────────────┤ 0,N ( est inscrit ) 0,N ├─────────────────┤
│ numCINEtu (id) │──────( typeCours )───────────│ codeSess (id) │
│ nomEtu │ │ nomSess │
│ prenomEtu │ │ dateDebutSess │
│ … │ │ dateFinSess │
└──────────────────┘ └─────────────────┘
entité : un rectangle association : un ovale (ou un rectangle aux coins arrondis)Les cardinalités
Chaque entité reliée à une association reçoit deux cardinalités : un minimum et un maximum. Une association binaire a donc quatre cardinalités. On les lit à partir de l'entité : « une occurrence de cette entité participe au minimum … et au maximum … fois à l'association ».
Tableau: Les règles de passage du graphe des DF au MCD
Application au centre de formation :
codeSess → codeForm donne l'association Concerne entre SESSION (1,1) et FORMATION (0,N) ;numCINEtu + codeSess → typeCours donne l'association est inscrit, porteuse de typeCours ;Le MCD complet
┌──────────────────┐ ┌──────────────────┐
│ ÉTUDIANT │ │ SESSION │
│ numCINEtu (id) │ 0,N ┌─────────────┐ 0,N │ codeSess (id) │
│ nomEtu │──────│ EST INSCRIT │─────│ nomSess │
│ prenomEtu │ │ typeCours │ │ dateDebutSess │
│ dateNaissEtu │ └─────────────┘ │ dateFinSess │
│ niveauEtu │ └────────┬─────────┘
│ nomVilleEtu │ │ 1,1
│ adresseEtu │ ┌──────┴──────┐
└──────────────────┘ │ CONCERNE │
└──────┬──────┘
┌──────────────────┐ │ 0,N
│ SPÉCIALITÉ │ 1,N ┌─────────────┐ 1,N ┌────────┴─────────┐
│ codeSpec (id) │──────│ APPARTIENT │─────│ FORMATION │
│ nomSpec │ └─────────────┘ │ codeForm (id) │
│ descSpec │ │ titreForm │
└──────────────────┘ │ dureeForm │
│ prixForm │
└──────────────────┘