diff --git a/app/pages/docs/merise/dictionnaire-de-donnees/+Page.mdx b/app/pages/docs/merise/dictionnaire-de-donnees/+Page.mdx index f31ce32..a32b787 100644 --- a/app/pages/docs/merise/dictionnaire-de-donnees/+Page.mdx +++ b/app/pages/docs/merise/dictionnaire-de-donnees/+Page.mdx @@ -4,6 +4,7 @@ description: Explorez le dictionnaire de données dans Merise, essentiel pour st tags: [Backend, Merise, BDD, MCD, MLD, MPD, SQL] --- +import DictionnaryTable from "./DictionnaryTable"; import Callout from "@/components/Callout"; Le **dictionnaire de données** est un document qui contient toutes les informations sur les données qui vont être stockées dans la future base de données. @@ -72,18 +73,7 @@ Tu risques de retrouver ton client en train de convulser sur le sol : **pas glop Voici donc le dictionnaire de données que l'on va créer pour notre application : -| Nom de la donnée | Format | Longueur | Contraintes | Document | -| --------------------------- | -------------- | -------- | ------------------- | ---------- | -| Nom | Alphabétique | 30 | Obligatoire | Musicien | -| Prénom | Alphabétique | 30 | Obligatoire | Musicien | -| Instruments | Alphabétique | 30 | Obligatoire | Musicien | -| Adresse e-mail | Alphanumérique | 50 | Obligatoire, unique | Musicien | -| Mot de passe | Alphanumérique | > 12 | Obligatoire | Musicien | -| Date et heure de concert | Date | - | Obligatoire | Concert | -| Lieu de concert | Alphabétique | 50 | Obligatoire | Concert | -| Tarif | Numérique | - | - | Concert | -| Date et heure de répétition | Date | - | Obligatoire | Répétition | -| Lieu de répétition | Alphabétique | 50 | Obligatoire | Répétition | + Voilà, on a notre dictionnaire de données ! diff --git a/app/pages/docs/merise/dictionnaire-de-donnees/DictionnaryTable.tsx b/app/pages/docs/merise/dictionnaire-de-donnees/DictionnaryTable.tsx new file mode 100644 index 0000000..76041ce --- /dev/null +++ b/app/pages/docs/merise/dictionnaire-de-donnees/DictionnaryTable.tsx @@ -0,0 +1,87 @@ +export default function DictionnaryTable() { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Nom de la donnéeFormatLongueurContraintesDocument
NomAlphabétique30ObligatoireMusicien
PrénomAlphabétique30ObligatoireMusicien
InstrumentsAlphabétique30ObligatoireMusicien
Adresse e-mailAlphanumérique50Obligatoire, uniqueMusicien
Mot de passeAlphanumérique> 12ObligatoireMusicien
Date et heure de concertDate-ObligatoireConcert
Lieu de concertAlphabétique50ObligatoireConcert
TarifNumérique--Concert
Date et heure de répétitionDate-ObligatoireRépétition
Lieu de répétitionAlphabétique50ObligatoireRépétition
+ ); +} diff --git a/app/pages/docs/merise/mcd/+Page.mdx b/app/pages/docs/merise/mcd/+Page.mdx new file mode 100644 index 0000000..ab7ec9b --- /dev/null +++ b/app/pages/docs/merise/mcd/+Page.mdx @@ -0,0 +1,194 @@ +--- +title: Modèle Conceptuel de Données (MCD) Merise +description: Comprenez le MCD dans Merise, une étape clé pour représenter les données de manière abstraite et cohérente. +tags: [Backend, Merise, BDD, MCD, MLD, MPD, SQL] +--- + +import DictionnaryTable from "../dictionnaire-de-donnees/DictionnaryTable"; +import Callout from "@/components/Callout"; +import TermsTable from "./TermsTable"; + +On va enfin pouvoir commencer à réaliser notre premier schéma : le **MCD** _(Modèle Conceptuel de Données)_ ! + +Mais déjà... qu'est-ce que c'est que ce MCD ? + +## Qu'est-ce que le MCD ? + +Le **MCD** est un schéma qui va nous permettre de représenter les données que l'on a récupérées dans le dictionnaire de données. + +Il va nous permettre de représenter les différentes données que l'on a, regroupée dans un rectangle nommé **entité**, ainsi que les relations entre elles. +On devra également indiquer les **cardinalités** de chaque relation entre les **entités**. + +Tout comme le dictionnaire de données, ce schéma doit rester compréhensible par le client. +Il doit donc être le plus simple possible, et ne pas contenir de détails techniques. + +Pour ce schéma _(ainsi que les suivants)_, on va utiliser le logiciel **Looping**. + +## Définitions + +Tu l'auras remarqué, ici on ne parle pas de "table" ou de "colonne". +On va exploiter d'autres termes comme **entité**, **attribut** ou **relation**. + +Voici un petit lexique pour t'aider à comprendre : + + + +C'est tout un lexique à apprendre, mais pas de panique tu vas vite t'y habituer ! + +## Exemple de MCD + +Forcément, les définitions sans donner un exemple ça n'aide pas beaucoup à comprendre... +Voici un petit exemple tout simple de MCD pour illustrer tout ça : + +![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** + +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 + + + Dans le MCD, un attribut en gras est un attribut **unique**. + S'il est souligné en plus d'être en gras, c'est qu'il s'agit d'un **discriminant** _(ou déterminant/identifiant)_. + + Il permet d'identifier de manière unique une entité. + Comme le MCD n'est **pas technique**, on n'utilisera pas le terme de **clé primaire** ou **ID**. + + +Et pour terminer, on remarque aussi que certaines de nos entités sont reliées entre elles par des **relations**. +Les relations se caractèrisent par : + +- Une bulle ovale ou arrondie contenant un verbe à l'infinitif _(par exemple : "posséder")_ +- Des **cardinalités** qui vont indiquer le nombre d'occurrences d'une entité par rapport à une autre. + +Ici, on a : + +- **Entité 1** 0,N - Contenir - 0,N **Entité 2** +- **Entité 1** 1,1 - Posséder - 0,N **Entité 3** + +Mais qu'est-ce que ça veut dire tout ça ? + +## Les cardinalités + +Les cardinalités sont un élément essentiel du MCD. +Elles vont nous permettre de définir le nombre d'occurrences d'une entité par rapport à une autre. + +Une cardinalité est définie par deux valeurs : + +1. Le **minimum** d'occurrences +2. Le **maximum** d'occurrences + +On va donc avoir des cardinalités de la forme : **X,Y**. + +Toujours dans l'exemple précédent, on comprend donc que : + +- **Entité 1** peut contenir entre 0 et N **Entité 2** +- **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** + + + La plupart du temps, nous allons retrouver les valeurs suivantes : + + - **0** + - **1** + - **N** + + **N** signifie "N'importe quel nombre" _(0, 1, 2, 3, ...)_. + Mais dès que l'on connait le nombre exact, on peut le mettre à la place de **N**. + + Par exemple : **1,5** signifie "1 à 5" et **0,3** signifie "0 à 3". + + Si la valeur n'est pas connue à l'avance ou qu'aucune limite n'est nécessaire, on utilisera alors **N**. + + +## 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. + +Pour rappel, voici notre dictionnaire de données : + + + +### Les entités + +On va donc créer trois entités : + +- **Musicien** +- **Concert** +- **Répétition** + +Ces entités vont contenir les attributs que l'on a récupérés dans le dictionnaire de données. + +On se retrouve pour le moment avec un MCD qui ressemble à ça : +![MCD avec uniquement les entités](/images/merise/mcd-1.webp) + +On est déjà pas trop mal, il nous reste plus qu'à ajouter les relations entre les entités et les cardinalités ! + +### Les relations + +On va donc ajouter les relations entre les entités. + +Sachant qu'un musicien peut participer à plusieurs concerts, et qu'un concert peut avoir plusieurs musiciens, on va créer une relation entre les deux entités. +On va donc créer une relation **"Participer"** entre les entités **Musicien** et **Concert**. + +On en fera une relation **0,N** - **1,N**. + +Pour la répétition, on va faire la même chose ! +On va créer une relation **"Répéter"** entre les entités **Musicien** et **Répétition**. + +À la fin, on se retrouve avec un MCD qui ressemble à ça : +![MCD avec les relations](/images/merise/mcd-2.webp) + +Et c'est tout ! Notre MCD est terminé... enfin presque ! + +### Aller plus loin + +Si on souhaite aller plus loin, on peut ajouter de l'héritage. + + + L'héritage _(ou aussi appelé **spécialisation** ou **généralisation**)_ est un concept qui va nous permettre de factoriser les propriétés identiques dans une entité commune. Cette entitée est appelée **entité générique** _(ou **sur-type**)_. + + Les entités qui héritent de l'entité générique sont appelées **entités spécialisées** _(ou **sous-types**)_. + + +En regardant bien notre MCD, on se rend compte que les entités **Concert** et **Répétition** ont des attributs communs : + +- Date et heure +- Lieu + +La seule différence est que le concert a un tarif, contrairement à la répétition. +On va donc pouvoir créer une entité **générique** que l'on appelera **Événement**. + +Cette entité générique va contenir les attributs communs aux deux entités, et on va faire hériter les entités **Concert** et **Répétition** de cette entité. +On se retrouve donc avec ces trois entités _(**Événement**, **Concert** et **Répétition**)_ : +![MCD avec héritage](/images/merise/mcd-3.webp) + + + Effectivement, on aurait pu stocker le type d'événement dans l'entité **Événement** ! + Il s'agit d'une autre approche qui est tout à fait valable. + + Cependant, il est plus simple de créer une entité générique qui va nous permettre de factoriser les attributs communs et éviter de devoir rendre plusieurs attributs nullables en fonction du type d'événement. + + On renforce ainsi l'intégrité de la base de données. + + +Le MCD final ressemble donc à ça : +![MCD final](/images/merise/mcd-4.webp) + +Si tu souhaites télécharger le MCD que l'on vient de créer, tu peux le faire ici : [MCD Merise pour Looping](/downloads/merise/band-manager.loo). + +## Conclusion + +En conclusion, le MCD dans Merise est un outil indispensable pour structurer et visualiser les données de manière claire et cohérente. + +Grâce à des entités, des attributs, des relations et des cardinalités, le MCD permet de représenter les informations de façon abstraite, tout en restant compréhensible pour le client. + +Prochaine étape : le **MLD** _(Modèle Logique de Données)_ et le **MRD** _(Modèle Relationnel de Données)_ ! diff --git a/app/pages/docs/merise/mcd/TermsTable.tsx b/app/pages/docs/merise/mcd/TermsTable.tsx new file mode 100644 index 0000000..89a8935 --- /dev/null +++ b/app/pages/docs/merise/mcd/TermsTable.tsx @@ -0,0 +1,60 @@ +export default function TermsTable() { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TermeDéfinition
+ Entité + + Représentation d'un regroupement de données (rectangle) +
+ Attribut + Donnée précise d'une entité
+ Relation + + Lien entre deux entités (bulle ovale/arrondie), accompagné + d'un verbe à l'infinitif +
+ Cardinalité + + Nombre d'occurrences (minimum et maximum) d'une entité par + rapport à une autre +
+ Discriminant{" "} + + (ou{" "} + déterminant/ + identifiant) + + + Attribut qui permet d'identifier une entité de manière unique{" "} + (ex: matricule) +
+ ); +} diff --git a/app/pages/docs/merise/mld/+Page.mdx b/app/pages/docs/merise/mld/+Page.mdx new file mode 100644 index 0000000..bc9e1c3 --- /dev/null +++ b/app/pages/docs/merise/mld/+Page.mdx @@ -0,0 +1,7 @@ +--- +title: Modèle Logique/Relationnel de Données (MLD/MRD) Merise +description: Plongez dans le MLD et MRD de Merise pour transformer votre modèle conceptuel en une structure relationnelle optimisée. +tags: [Backend, Merise, BDD, MCD, MLD, MPD, SQL] +--- + +En cours de rédaction... diff --git a/app/pages/docs/merise/mpd/+Page.mdx b/app/pages/docs/merise/mpd/+Page.mdx new file mode 100644 index 0000000..a8e6ce7 --- /dev/null +++ b/app/pages/docs/merise/mpd/+Page.mdx @@ -0,0 +1,7 @@ +--- +title: Modèle Physique de Données (MPD) Merise +description: Apprenez à créer le MPD dans Merise, la dernière étape pour concrétiser votre base de données sur un SGBD. +tags: [Backend, Merise, BDD, MCD, MLD, MPD, SQL] +--- + +En cours de rédaction... diff --git a/app/public/downloads/dwwm/REAC_DWWM_V04_02072024.pdf b/app/public/downloads/dwwm/REAC_DWWM_V04_02072024.pdf new file mode 100644 index 0000000..6fdf6a5 Binary files /dev/null and b/app/public/downloads/dwwm/REAC_DWWM_V04_02072024.pdf differ diff --git a/app/public/downloads/dwwm/REV2_DWWM_V04_02072024.pdf b/app/public/downloads/dwwm/REV2_DWWM_V04_02072024.pdf new file mode 100644 index 0000000..6de7e57 Binary files /dev/null and b/app/public/downloads/dwwm/REV2_DWWM_V04_02072024.pdf differ diff --git a/app/public/downloads/merise/band-manager.lo1 b/app/public/downloads/merise/band-manager.lo1 new file mode 100644 index 0000000..9b033b5 Binary files /dev/null and b/app/public/downloads/merise/band-manager.lo1 differ diff --git a/app/public/downloads/merise/band-manager.loo b/app/public/downloads/merise/band-manager.loo new file mode 100644 index 0000000..9b033b5 Binary files /dev/null and b/app/public/downloads/merise/band-manager.loo differ diff --git a/app/public/images/merise/mcd-1.webp b/app/public/images/merise/mcd-1.webp new file mode 100644 index 0000000..18bbba3 Binary files /dev/null and b/app/public/images/merise/mcd-1.webp differ diff --git a/app/public/images/merise/mcd-2.webp b/app/public/images/merise/mcd-2.webp new file mode 100644 index 0000000..8a3ab9b Binary files /dev/null and b/app/public/images/merise/mcd-2.webp differ diff --git a/app/public/images/merise/mcd-3.webp b/app/public/images/merise/mcd-3.webp new file mode 100644 index 0000000..53e8aba Binary files /dev/null and b/app/public/images/merise/mcd-3.webp differ diff --git a/app/public/images/merise/mcd-4.webp b/app/public/images/merise/mcd-4.webp new file mode 100644 index 0000000..3bc92cf Binary files /dev/null and b/app/public/images/merise/mcd-4.webp differ diff --git a/app/public/images/merise/mcd-basic.webp b/app/public/images/merise/mcd-basic.webp new file mode 100644 index 0000000..fcc6e93 Binary files /dev/null and b/app/public/images/merise/mcd-basic.webp differ diff --git a/app/public/images/merise/og.webp b/app/public/images/merise/og.webp new file mode 100644 index 0000000..8dfbe5e Binary files /dev/null and b/app/public/images/merise/og.webp differ