diff --git a/app/pages/docs/merise/mcd/+Page.mdx b/app/pages/docs/merise/mcd/+Page.mdx index ab7ec9b..f91d63c 100644 --- a/app/pages/docs/merise/mcd/+Page.mdx +++ b/app/pages/docs/merise/mcd/+Page.mdx @@ -50,9 +50,9 @@ On a ici un MCD qui représente trois **entités** : Chacune de ces entités a plusieurs **attributs** qui lui sont propres : -- **Entité 1** : code identité 1, attribut 2, attribut 3 -- **Entité 2** : code identité 2, attribut 2, attribut 3 -- **Entité 3** : code identité 3, attribut 2, attribut 3 +- **Entité 1** : code entité 1, attribut 2, attribut 3 +- **Entité 2** : code entité 2, attribut 2, attribut 3 +- **Entité 3** : code entité 3, attribut 2, attribut 3 Dans le MCD, un attribut en gras est un attribut **unique**. @@ -72,6 +72,7 @@ Ici, on a : - **Entité 1** 0,N - Contenir - 0,N **Entité 2** - **Entité 1** 1,1 - Posséder - 0,N **Entité 3** +- **Entité 3** 0,N - Diriger - 0,1 **Entité 3** Mais qu'est-ce que ça veut dire tout ça ? @@ -93,6 +94,8 @@ Toujours dans l'exemple précédent, on comprend donc que : - **Entité 2** peut être contenue entre 0 et N **Entité 1** - **Entité 1** doit posséder 1 et 1 seule **Entité 3** - **Entité 3** peut être possédée entre 0 et N **Entité 1** +- **Entité 3** peut diriger entre 0 et N **Entité 3** +- **Entité 3** peut être dirigée par 0 ou 1 **Entité 3** La plupart du temps, nous allons retrouver les valeurs suivantes : @@ -109,6 +112,22 @@ Toujours dans l'exemple précédent, on comprend donc que : Si la valeur n'est pas connue à l'avance ou qu'aucune limite n'est nécessaire, on utilisera alors **N**. +## Les relations réflexives + +En regardant notre exemple, on se rend compte que l'entité **Entité 3** est reliée à elle-même par une relation. +C'est ce qu'on appelle une **relation réflexive**. + +C'est un cas particulier qui va nous permettre de créer une relation entre une entité et elle-même, +sans avoir à créer une nouvelle entité. + +### Situation concrète + +Prenons un exemple concret avec une entité **Catégorie**. +Si l'on souhaite qu'une catégorie puisse regrouper plusieurs sous-catégories _(et que ces sous-catégories puissent elles-mêmes regrouper d'autres sous-catégories)_, +on va créer une relation réflexive entre la catégorie et elle-même. + +De cette manière, on va pouvoir créer une hiérarchie entre les catégories. + ## Retour sur notre dictionnaire de données Maintenant que l'on sait comment fonctionne un MCD, on va pouvoir retourner sur notre dictionnaire de données pour le formaliser en MCD. diff --git a/app/pages/docs/merise/mld/+Page.mdx b/app/pages/docs/merise/mld/+Page.mdx index e35a3fd..0e603ac 100644 --- a/app/pages/docs/merise/mld/+Page.mdx +++ b/app/pages/docs/merise/mld/+Page.mdx @@ -12,6 +12,40 @@ Le MLD est la suite normale et directe du MCD dans le processus Merise. Son but On parlera plus tard du MRD, mais globalement : c'est la même chose que le MLD ! +## Qu'est-ce que le MLD ? + +Le **MLD** est un schéma qui va nous permettre de représenter les données que l'on a récupérées dans le MCD, mais en ajoutant des détails techniques. + +Il va nous permettre de représenter les différentes données que l'on a, regroupée dans une **table**, ainsi que les relations entre elles au travers de **clés étrangères**, de **clés primaires** et de **tables de jointure**. + +Contrairement au MCD, le MLD n'est pas destiné à être compris par le client. + +## Exemple de MLD + +Reprenons le premier exemple de MCD, dans l'article précédent : + +![Exemple de MCD](/images/merise/mcd-basic.webp) + +On a ici un MCD qui représente trois **entités** : + +- **Entité 1** +- **Entité 2** +- **Entité 3** + +À partir de ce MCD, on va pouvoir créer un MLD. +Voici à quoi il ressemble : + +![Exemple de MLD](/images/merise/mld-basic.webp) + +On a ici un MLD qui représente trois **tables** : +- **table_1** +- **table_2** +- **table_3** + +Mais surtout : on a ajouté des **clés primaires**, des **clés étrangères** et une **table de jointure** ! + +Pour le moment ça semble bizarre voire magique, on va prendre le temps de décortiquer tout ça. + ## Transformation du MCD en MLD Comme dit plus tôt, le MLD découle directement du MCD. @@ -22,10 +56,6 @@ Il va donc reprendre les mêmes **entités** et **attributs** que le MCD, mais e On parlera aussi de **clé primaire** et de **clé étrangère** ! -Reprenons le premier exemple de MCD, dans l'article précédent : - -![Exemple de MCD](/images/merise/mcd-basic.webp) - Pour pouvoir le transformer en MLD, il y a plusieurs éléments à prendre en compte : - Attributs : @@ -41,7 +71,10 @@ Commençons par les **entités** et leurs **attributs**, on verra les cardinalit ### Convertir les entités et attributs -Pour cette étape, ça va être très simple ! +Pour cette étape, ça va être très simple ! +On vient reprendre notre MCD correspondant à la gestion d'un groupe de musique : + +![MCD final](/images/merise/mcd-4.webp) Les seules choses que nous avons à faire sont : @@ -57,7 +90,7 @@ Les seules choses que nous avons à faire sont : Voici donc les tables et colonnes que l'on obtient : -![Exemple de MLD sans relations](/images/merise/mld-basic-no-relation.webp) +![Exemple de MLD sans relations](/images/merise/mld-1.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** ! @@ -76,8 +109,18 @@ Un troisième cas existe, dans le cas où la relation est réflexive _(une entit 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 : +Dans notre cas, on a une relation **One to Many** entre **Événement** et l'héritage _(**Concert** et **Répétition")_. + + + Effectivement, aucune cardinalité n'est présente entre l'héritage et l'entité générique ! + Dans ce cas précis, on considère que l'héritage est une relation **One to Many**. + + C'est-à-dire : + + - **Événement** doit être spécialisé par **Concert** ou **Répétition** _(1,1)_ + - **Concert** peut spécialiser plusieurs **Événement** _(0,N)_ + - **Répétition** peut spécialiser plusieurs **Événement** _(0,N)_ + - **Entité 1** doit avoir un et un seul **Entité 3** _(1,1)_ - **Entité 3** peut avoir plusieurs **Entité 1** _(0,N)_ @@ -86,4 +129,6 @@ On va donc ajouter une **clé étrangère** dans la table **Entité 1** qui va f ![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 +Et là : tu remarqueras que la **clé étrangère** est en italique et est préfixée par un `#` ! +C'est un petit rappel pour nous indiquer que c'est une **clé étrangère**. + diff --git a/app/public/downloads/merise/example.lo1 b/app/public/downloads/merise/example.lo1 index f949985..16768f6 100644 Binary files a/app/public/downloads/merise/example.lo1 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 index f949985..40c4c0b 100644 Binary files a/app/public/downloads/merise/example.loo 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 7a11445..4bf7c18 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-1.webp b/app/public/images/merise/mld-1.webp new file mode 100644 index 0000000..603b5f2 Binary files /dev/null and b/app/public/images/merise/mld-1.webp differ diff --git a/app/public/images/merise/mld-basic-no-relation.webp b/app/public/images/merise/mld-basic-no-relation.webp deleted file mode 100644 index 4d528de..0000000 Binary files a/app/public/images/merise/mld-basic-no-relation.webp and /dev/null 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 deleted file mode 100644 index 91c5ebd..0000000 Binary files a/app/public/images/merise/mld-basic-one-to-many.webp and /dev/null differ diff --git a/app/public/images/merise/mld-basic.webp b/app/public/images/merise/mld-basic.webp new file mode 100644 index 0000000..e4d9b56 Binary files /dev/null and b/app/public/images/merise/mld-basic.webp differ