docs/merise #20
@ -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 :
|
Chacune de ces entités a plusieurs **attributs** qui lui sont propres :
|
||||||
|
|
||||||
- **Entité 1** : code identité 1, attribut 2, attribut 3
|
- **Entité 1** : code entité 1, attribut 2, attribut 3
|
||||||
- **Entité 2** : code identité 2, attribut 2, attribut 3
|
- **Entité 2** : code entité 2, attribut 2, attribut 3
|
||||||
- **Entité 3** : code identité 3, attribut 2, attribut 3
|
- **Entité 3** : code entité 3, attribut 2, attribut 3
|
||||||
|
|
||||||
<Callout type="question" title="Pourquoi le premier attribut est en gras et souligné ?">
|
<Callout type="question" title="Pourquoi le premier attribut est en gras et souligné ?">
|
||||||
Dans le MCD, un attribut en gras est un attribut **unique**.
|
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** 0,N - Contenir - 0,N **Entité 2**
|
||||||
- **Entité 1** 1,1 - Posséder - 0,N **Entité 3**
|
- **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 ?
|
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é 2** peut être contenue entre 0 et N **Entité 1**
|
||||||
- **Entité 1** doit posséder 1 et 1 seule **Entité 3**
|
- **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 ê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**
|
||||||
|
|
||||||
<Callout type="note" title="Les différentes valeurs">
|
<Callout type="note" title="Les différentes valeurs">
|
||||||
La plupart du temps, nous allons retrouver les valeurs suivantes :
|
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**.
|
Si la valeur n'est pas connue à l'avance ou qu'aucune limite n'est nécessaire, on utilisera alors **N**.
|
||||||
</Callout>
|
</Callout>
|
||||||
|
|
||||||
|
## 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
|
## 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.
|
Maintenant que l'on sait comment fonctionne un MCD, on va pouvoir retourner sur notre dictionnaire de données pour le formaliser en MCD.
|
||||||
|
|||||||
@ -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 !
|
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 :
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
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 :
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
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
|
## Transformation du MCD en MLD
|
||||||
|
|
||||||
Comme dit plus tôt, le MLD découle directement du MCD.
|
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** !
|
On parlera aussi de **clé primaire** et de **clé étrangère** !
|
||||||
</Callout>
|
</Callout>
|
||||||
|
|
||||||
Reprenons le premier exemple de MCD, dans l'article précédent :
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
Pour pouvoir le transformer en MLD, il y a plusieurs éléments à prendre en compte :
|
Pour pouvoir le transformer en MLD, il y a plusieurs éléments à prendre en compte :
|
||||||
|
|
||||||
- Attributs :
|
- Attributs :
|
||||||
@ -42,6 +72,9 @@ Commençons par les **entités** et leurs **attributs**, on verra les cardinalit
|
|||||||
### Convertir les entités et attributs
|
### 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 :
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
Les seules choses que nous avons à faire sont :
|
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 :
|
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** !
|
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 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**.
|
Dans notre cas, on a une relation **One to Many** entre **Événement** et l'héritage _(**Concert** et **Répétition")_.
|
||||||
Leurs cardinalités nous indique que :
|
|
||||||
|
<Callout type="question" title="Mais il n'y a pas de cardinalité ici !">
|
||||||
|
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)_
|
||||||
|
</Callout>
|
||||||
|
|
||||||
- **Entité 1** doit avoir un et un seul **Entité 3** _(1,1)_
|
- **Entité 1** doit avoir un et un seul **Entité 3** _(1,1)_
|
||||||
- **Entité 3** peut avoir plusieurs **Entité 1** _(0,N)_
|
- **Entité 3** peut avoir plusieurs **Entité 1** _(0,N)_
|
||||||
@ -87,3 +130,5 @@ On va donc ajouter une **clé étrangère** dans la table **Entité 1** qui va f
|
|||||||

|

|
||||||
|
|
||||||
Et là : tu remarqueras que la **clé étrangère** est en italique et est préfixée par un `#` !
|
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**.
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 26 KiB |
BIN
app/public/images/merise/mld-1.webp
Normal file
BIN
app/public/images/merise/mld-1.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
Binary file not shown.
Binary file not shown.
BIN
app/public/images/merise/mld-basic.webp
Normal file
BIN
app/public/images/merise/mld-basic.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 23 KiB |
Loading…
Reference in New Issue
Block a user