diff --git a/app/pages/docs/merise/mld/+Page.mdx b/app/pages/docs/merise/mld/+Page.mdx index 46e3a23..59d2ac8 100644 --- a/app/pages/docs/merise/mld/+Page.mdx +++ b/app/pages/docs/merise/mld/+Page.mdx @@ -69,7 +69,7 @@ Pour pouvoir le transformer en MLD, il y a plusieurs éléments à prendre en co Commençons par les **entités** et leurs **attributs**, on verra les cardinalités après 😉 -### Convertir les entités et attributs +## Convertir les entités et attributs Pour cette étape, ça va être très simple ! On vient reprendre notre MCD correspondant à la gestion d'un groupe de musique : @@ -94,7 +94,7 @@ Voici donc les tables et colonnes que l'on obtient : 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 +## Convertir les relations Pour convertir les relations, il faut d'abord se poser la question de la cardinalité maximale de chaque relation. @@ -105,7 +105,7 @@ Il y a deux possibilités : Un troisième cas existe, dans le cas où la relation est réflexive _(une entité se relie à elle-même)_. -#### One to Many +### ➡️ 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)_. @@ -129,4 +129,35 @@ On va donc ajouter une **clé étrangère** dans les tables **concert** et **reh Et là : tu remarqueras que les **clés étrangères** sont en italique et sont préfixées par un `#` ! On constate également que des flèches sont apparues entre les tables. -Ces flèches nous permettent de visualiser le sens de la relation entre les tables, en partant de la table contenant la **clé étrangère** vers la table contenant la **clé primaire**. \ No newline at end of file +Ces flèches nous permettent de visualiser le sens de la relation entre les tables, en partant de la table contenant la **clé étrangère** vers la table contenant la **clé primaire**. + +### 🔀 Many to Many + +Pour cette deuxième possibilité, il est impossible de stocker une clé étrangère dans l'une des deux tables. +Il faut alors créer une **table de jointure** qui va faire le lien entre les deux tables. + +Cette table se caractérise par : + +- **Son nom** : + - Généralement composé des deux tables qu'elle relie, séparées par un `_` _(ex: `table_1_table_2`)_ + - Peut aussi être un nom plus explicite, comme `table_1_action_table_2` +- **Ses colonnes** : + - Deux colonnes qui vont faire référence aux **clés primaires** des deux tables qu'elle relie + - Les potentielles autres colonnes qui sont spécifiques à la relation + +![Exemple de MLD avec relation Many to Many](/images/merise/mld-3.webp) + +Ici, nous avons une relation **Many to Many** entre les tables **musician** et **event**. +Une table de jointure a donc été créée, qui s'appelle `musician_participates_event`. + +Cette table contient deux colonnes qui font référence aux **clés primaires** des tables **musician** et **event**. + + + Il n'est pas nécessaire d'ajouter une clé primaire dans la table de jointure. + + Pour rendre unique chaque enregistrement, on viendra _(plus tard !)_ créer une **clé unique** sur les deux colonnes qui fait référence aux **clés primaires** des tables qu'elle relie. + + C'est ce qu'on appelle une **clé composite**. + + +### 🔄 Relations réflexives \ No newline at end of file diff --git a/app/public/images/merise/mld-3.webp b/app/public/images/merise/mld-3.webp new file mode 100644 index 0000000..c1c7dd7 Binary files /dev/null and b/app/public/images/merise/mld-3.webp differ