feat: Add support for checking if a relation is reflexive

This commit is contained in:
Gauthier Daniels 2025-04-22 15:50:30 +02:00
parent 3caced0e7e
commit 27256eecd9
7 changed files with 35 additions and 1 deletions

View File

@ -35,6 +35,7 @@ Pour pouvoir le transformer en MLD, il y a plusieurs éléments à prendre en co
- Relations : - Relations :
- On supprime les **relations** du MCD pour laisser place à des **clés étrangères** dans le MLD. - On supprime les **relations** du MCD pour laisser place à des **clés étrangères** dans le MLD.
- Est-ce que la cardinalité maximale est de **1** ou de **N** ? - Est-ce que la cardinalité maximale est de **1** ou de **N** ?
- Est-ce que la relation est dite **réflexive** ?
Commençons par les **entités** et leurs **attributs**, on verra les cardinalités après 😉 Commençons par les **entités** et leurs **attributs**, on verra les cardinalités après 😉
@ -52,4 +53,37 @@ Les seules choses que nous avons à faire sont :
On serait tenté de le faire dès maintenant, mais ce serait ne pas respecter la méthode Merise et l'intérêt du MLD. On serait tenté de le faire dès maintenant, mais ce serait ne pas respecter la méthode Merise et l'intérêt du MLD.
On le fera plus tard, dans le **MPD** _(Modèle Physique de Données)_ ! On le fera plus tard, dans le **MPD** _(Modèle Physique de Données)_ !
</Callout> </Callout>
Voici donc les tables et colonnes que l'on obtient :
![Exemple de MLD sans relations](/images/merise/mld-basic-no-relation.webp)
Pour l'instant, on a juste remplacé les **entités** par des **tables** et les **attributs** par des **colonnes**. Il nous reste plus qu'à ajouter les **clés primaires** et les **clés étrangères** !
### Convertir les relations
Pour convertir les relations, il faut d'abord se poser la question de la cardinalité maximale de chaque relation.
Il y a deux possibilités :
- **One to Many** _(1,N)_
- **Many to Many** _(N,N)_
Un troisième cas existe, dans le cas où la relation est réflexive _(une entité se relie à elle-même)_.
#### One to Many
Dans le cas d'une relation **One to Many**, on va ajouter une **clé étrangère** dans la table qui est du côté de la relation **One** _(1)_.
Dans notre exemple, on a une relation **One to Many** entre **Entité 1** et **Entité 3**.
Leurs cardinalités nous indique que :
- **Entité 1** doit avoir un et un seul **Entité 3** _(1,1)_
- **Entité 3** peut avoir plusieurs **Entité 1** _(0,N)_
On va donc ajouter une **clé étrangère** dans la table **Entité 1** qui va faire référence à la **clé primaire** de la table **Entité 3**.
![Exemple de MLD avec relation One to Many](/images/merise/mld-basic-one-to-many.webp)
Et là : tu remarqueras que la **clé étrangère** est en italique et est préfixée par un `#` !

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB