diff --git a/app/pages/docs/merise/mld/+Page.mdx b/app/pages/docs/merise/mld/+Page.mdx index aaef9b1..e35a3fd 100644 --- a/app/pages/docs/merise/mld/+Page.mdx +++ b/app/pages/docs/merise/mld/+Page.mdx @@ -35,6 +35,7 @@ Pour pouvoir le transformer en MLD, il y a plusieurs éléments à prendre en co - Relations : - 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 relation est dite **réflexive** ? 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 le fera plus tard, dans le **MPD** _(Modèle Physique de Données)_ ! - \ No newline at end of file + + +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 `#` ! \ No newline at end of file diff --git a/app/public/downloads/merise/band-manager.loo b/app/public/downloads/merise/band-manager.loo index 9b033b5..746d0ec 100644 Binary files a/app/public/downloads/merise/band-manager.loo and b/app/public/downloads/merise/band-manager.loo differ diff --git a/app/public/downloads/merise/example.lo1 b/app/public/downloads/merise/example.lo1 new file mode 100644 index 0000000..f949985 Binary files /dev/null and b/app/public/downloads/merise/example.lo1 differ diff --git a/app/public/downloads/merise/example.loo b/app/public/downloads/merise/example.loo new file mode 100644 index 0000000..f949985 Binary files /dev/null and b/app/public/downloads/merise/example.loo differ diff --git a/app/public/images/merise/mcd-basic.webp b/app/public/images/merise/mcd-basic.webp index fcc6e93..7a11445 100644 Binary files a/app/public/images/merise/mcd-basic.webp and b/app/public/images/merise/mcd-basic.webp differ diff --git a/app/public/images/merise/mld-basic-no-relation.webp b/app/public/images/merise/mld-basic-no-relation.webp new file mode 100644 index 0000000..4d528de Binary files /dev/null and b/app/public/images/merise/mld-basic-no-relation.webp differ diff --git a/app/public/images/merise/mld-basic-one-to-many.webp b/app/public/images/merise/mld-basic-one-to-many.webp new file mode 100644 index 0000000..91c5ebd Binary files /dev/null and b/app/public/images/merise/mld-basic-one-to-many.webp differ