Un bon modèle de données se construit en trois étapes :
MCD (Modèle Conceptuel des Données) → On ne parle que d’idées, d’entités et de relations. Pas de tables. Pas de clés.
MLD (Modèle Logique des Données) → On transforme les relations en tables, on ajoute les clés étrangères, on crée les tables d’association.
MPD (Modèle Physique des Données) → On prépare la version finale adaptée au SGBD (MySQL/MariaDB).
Chaque étape traduit la précédente, sans en sauter une.
Le MCD décrit le sens du système, sans logique SQL.
Les objets principaux manipulés par le système sont :
Important : aucune table d’association n’apparaît ici. Elles n’existent pas encore.
Un item peut avoir plusieurs tags, et un tag peut être associé à plusieurs items → relation N,N.
Une collection peut contenir plusieurs items, et un item peut figurer dans plusieurs collections → relation N,N.
Dans le MCD, on ne crée pas les tables d’association. On se contente de dire que la relation est N,N.
graph TD
OPERATOR["OPERATOR"]
ITEM["ITEM"]
TAG["Tag"]
CATEGORY["Category"]
THEME["Theme"]
COLLECTION["COLLECTION"]
MESSAGE["MESSAGE"]
POSSEDER(("POSSEDER"))
ASSIGNER(("ASSIGNER"))
TAGUER(("TAGUER"))
CONTENIR(("CONTENIR"))
CATEGORISER(("CATÉGORISER"))
THEMATISER(("THÉMATISER"))
OPERATOR -->|"0,N"| POSSEDER
POSSEDER -->|"1,1"| COLLECTION
OPERATOR -->|"0,N"| ASSIGNER
ASSIGNER -->|"0,1"| MESSAGE
ITEM -->|"0,N"| TAGUER
TAGUER -->|"0,N"| TAG
COLLECTION -->|"0,N"| CONTENIR
CONTENIR -->|"0,N"| ITEM
ITEM -->|"1,1"| CATEGORISER
CATEGORISER -->|"0,N"| CATEGORY
ITEM -->|"1,1"| THEMATISER
THEMATISER -->|"0,N"| THEME
Le MLD est la traduction logique du MCD.
itemthemecategorytagoperatormessagecollection| Relation MCD | Transformation MLD |
|---|---|
| item → theme | item.theme_id |
| item → category | item.category_id |
| item → operator (créateur) | item.created_by |
| message → operator | message.operator_id (facultatif) |
| collection → operator | collection.operator_id |
Elles apparaissent uniquement au MLD, jamais au MCD.
| Relation MCD | Table d’association (MLD) |
|---|---|
| item ↔ tag | item_tag |
| collection ↔ item | collection_item |
Chaque table d’association contient deux clés étrangères et interdit les doublons.
Le MPD est la version exploitable par MySQL/MariaDB. On y ajoute :
Voici une version textuelle, simple et pédagogique, sans SQL précis.
operatorthemecategorytagitemtheme_id)category_id)created_by)item_tag (table d’association)item_id + tag_idcollectionoperator_id)collection_itemcollection_id + item_idmessageoperator_id pour assignation| Niveau | Ce qu’on y met | Ce qu’on ne met pas |
|---|---|---|
| MCD | les entités, les relations | ❌ clés étrangères ❌ types ❌ tables d’association |
| MLD | les tables, les clés étrangères, les tables d’association | ❌ SQL spécifique |
| MPD | la version finale adaptée au SGBD | — |
item_tag et collection_item.Comprendre ces étapes, c’est la base d’un bon développeur backend.