Chapitre 158 minIntermédiaire
Aide-mémoire Merise : vocabulaire, notations et règles
Par Josselyn C., prof de BTS SIO. Mis à jour le .
À la fin de ce chapitre, tu sauras
- retrouver vite une définition ou une notation ;
- revoir les règles de passage et les formes normales ;
- appliquer les dix réflexes avant de rendre une copie.
Cet aide-mémoire rassemble sur une page le vocabulaire de Merise, la lecture des cardinalités, les règles de passage du MCD au MLD, les formes normales et les correspondances avec UML. Il sert à réviser la veille d'une épreuve ou à vérifier un point pendant un projet ; chaque ligne renvoie au chapitre qui l'explique.
Le vocabulaire
| Terme | Définition courte | Chapitre |
|---|---|---|
| Règle de gestion | Phrase qui décrit un fonctionnement ou une contrainte de l'organisation | 2 |
| Dictionnaire des données | Tableau des données élémentaires à mémoriser : code, signification, type, longueur, nature | 2 |
| Dépendance fonctionnelle (A → B) | Une valeur de A détermine une seule valeur de B | 3 |
| DF élémentaire | Aucune partie de la source ne suffit | 3 |
| DF transitive | A → B et B → C donnent A → C, qui passe par B | 3 |
| Entité | Ensemble d'objets de même nature à mémoriser | 4 |
| Occurrence | Un objet précis d'une entité, ou un lien précis d'une association | 4 |
| Propriété | Donnée élémentaire qui décrit une entité ou une association | 4 |
| Identifiant | Propriété (ou groupe) qui distingue chaque occurrence ; souligné | 4 |
| Association | Lien entre entités, nommé par un verbe | 4 |
| Association porteuse | Association qui a des propriétés, dépendant de toutes les entités reliées | 4 |
| Cardinalité | Couple (min, max) sur une patte, du côté de l'entité décrite | 5 |
| CIF | Contrainte d'intégrité fonctionnelle : une patte au maximum 1, future clé étrangère | 5 |
| Association réflexive | Association d'une entité avec elle-même, avec deux rôles | 6 |
| Association ternaire | Association de trois entités ; une occurrence est un triplet | 6 |
| Entité faible, identifiant relatif | Entité identifiée par son identifiant propre et celui d'une autre entité ; patte (1,1) | 6 |
| Héritage (spécialisation, généralisation) | Entité générique et entités spécialisées qui héritent de ses propriétés | 7 |
| Historisation | Conserver les valeurs passées d'une information | 7 |
| MLD, schéma relationnel | Tables, clés primaires (soulignées) et clés étrangères (#) | 8 |
| MPD | Script SQL pour un SGBD précis | 9 |
| 1FN, 2FN, 3FN | Formes normales : valeurs atomiques ; toute la clé ; rien que la clé | 10 |
| Rétro-conception | Retrouver le MCD d'une base existante | 11 |
Les cardinalités
| Cardinalité | Se lit | Mot de l'énoncé |
|---|---|---|
| 0,1 | zéro ou un | « peut avoir un », « au plus un » |
| 1,1 | exactement un | « un seul », « chaque… a un » |
| 0,n | zéro, un ou plusieurs | « peut avoir plusieurs », « éventuellement » |
| 1,n | au moins un | « au moins un », « un ou plusieurs » |
La question à poser : « Un [entité] [verbe] combien de [autre entité], au minimum, au maximum ? ». La réponse s'écrit du côté de l'entité de départ. En UML et en pattes de corbeau, elle s'écrit de l'autre côté.
Les règles de passage du MCD au MLD
| Dans le MCD | Dans le MLD |
|---|---|
| Entité | Table ; l'identifiant devient la clé primaire |
| Association un à plusieurs (x,1 — x,n) | Clé étrangère dans la table du côté du maximum 1 ; NOT NULL si 1,1, facultative si 0,1 |
| Association plusieurs à plusieurs (x,n — x,n) | Table de clé primaire composée des deux clés étrangères, plus les propriétés portées |
| Association un à un (0,1 — 1,1) | Clé étrangère unique du côté 1,1 |
| Association un à un (1,1 — 1,1) | Fusion des deux tables, en général |
| Réflexive un à plusieurs | Clé étrangère renommée dans la même table |
| Réflexive plusieurs à plusieurs | Table à deux clés étrangères renommées vers la même table |
| Ternaire | Table à trois clés étrangères ; clé primaire réduite s'il y a une CIF |
| Entité faible | Clé primaire composée : clé étrangère vers l'entité forte et identifiant propre |
| Héritage | Une table par entité, une seule table avec une colonne de type, ou les tables spécialisées seules |
| Entité DATE d'une association historisée | Pas de table : la date entre dans la clé primaire |
Compte de contrôle : nombre de tables = entités + associations plusieurs à plusieurs + associations ternaires (en tenant compte de l'héritage).
Les traductions de l'héritage
| Solution | Tables | Quand |
|---|---|---|
| Une table par entité | La table générique et une table par spécialisation, dont la clé primaire est une clé étrangère | Cas général |
| Une seule table | La table générique avec toutes les colonnes et une colonne de type | Peu de propriétés propres, aucune association propre |
| Tables spécialisées seules | Une table par spécialisation, avec les colonnes communes recopiées | Totalité, et aucune association vers l'entité générique |
Les contraintes
| Symbole | Nom | Règle |
|---|---|---|
| X | Exclusion | Au plus un (une spécialisation, une association) |
| T | Totalité | Au moins un |
| XT ou + | Partition | Exactement un |
| S | Simultanéité | Les deux ou aucun |
| I | Inclusion | Les liens d'une association sont inclus dans ceux d'une autre |
Les formes normales
| Forme | Condition | Ce qu'on corrige |
|---|---|---|
| 1FN | Une clé primaire, des valeurs atomiques, pas de groupe répétitif | Une liste dans une colonne, des colonnes tel1, tel2 |
| 2FN | 1FN, et chaque colonne non clé dépend de toute la clé | Une dépendance d'une partie d'une clé composée |
| 3FN | 2FN, et aucune colonne non clé ne dépend d'une autre colonne non clé | Une dépendance transitive |
| FNBC | Toute source de DF est une clé candidate | Une colonne non clé qui détermine une partie de la clé |
À retenir : chaque colonne dépend de la clé, de toute la clé, et de rien que la clé.
Merise, UML et pattes de corbeau
| Merise | UML | Pattes de corbeau |
|---|---|---|
| Entité | Classe | Table (entité) |
| Propriété | Attribut | Colonne |
| Identifiant souligné | (pas de notion) | Clé primaire (PK) |
| 0,1 | 0..1, de l'autre côté | Cercle et trait, de l'autre côté |
| 1,1 | 1, de l'autre côté | Deux traits, de l'autre côté |
| 0,n | * ou 0..*, de l'autre côté | Cercle et patte de corbeau, de l'autre côté |
| 1,n | 1..*, de l'autre côté | Trait et patte de corbeau, de l'autre côté |
| Association porteuse | Classe-association | Table d'association |
| Héritage | Généralisation | (selon l'outil) |
Du dictionnaire au type SQL
| Donnée | Type MySQL |
|---|---|
| Identifiant attribué par le système | INT AUTO_INCREMENT |
| Code fixe (code postal, ISBN, SIRET) | CHAR(n) |
| Texte | VARCHAR(n), TEXT pour un texte long |
| Montant | DECIMAL(p,s), jamais FLOAT |
| Quantité, compteur | SMALLINT, INT |
| Date ; date et heure | DATE ; DATETIME |
| Oui ou non | BOOLEAN |
| Téléphone | VARCHAR(20), jamais un nombre |
Les dix réflexes
- Lire tout l'énoncé avant de dessiner, et numéroter les règles de gestion.
- Retirer les données calculées et les paramètres du dictionnaire.
- Distinguer l'objet et ses exemplaires : document et exemplaire, modèle et véhicule, spectacle et représentation.
- Donner un identifiant à chaque entité ; créer un numéro quand rien n'est unique et stable.
- Nommer chaque association par un verbe ; un nom cache souvent une entité.
- Justifier chaque cardinalité par une phrase, dans les deux sens.
- Se demander si l'on garde l'historique : si un même couple peut se répéter, il faut une entité ou une date dans l'identification.
- Placer la clé étrangère du côté du maximum 1.
- Vérifier la 3FN : la clé, toute la clé, rien que la clé.
- Écrire ce que le schéma ne garantit pas, et comment on le fera respecter (trigger, application).