feat: Add 'question' icon and update tags for question type
This commit is contained in:
parent
69a6575cc9
commit
90c2773de1
@ -17,6 +17,7 @@ const styles = {
|
|||||||
const icons = {
|
const icons = {
|
||||||
note: (props: { className?: string }) => <Icon icon="lightbulb" {...props} />,
|
note: (props: { className?: string }) => <Icon icon="lightbulb" {...props} />,
|
||||||
warning: (props: { className?: string }) => <Icon icon="warning" color="amber" {...props} />,
|
warning: (props: { className?: string }) => <Icon icon="warning" color="amber" {...props} />,
|
||||||
|
question: (props: { className?: string }) => <Icon icon="question" color="blue" {...props} />,
|
||||||
};
|
};
|
||||||
|
|
||||||
export function Callout({
|
export function Callout({
|
||||||
|
|||||||
@ -14,6 +14,7 @@ const icons = {
|
|||||||
theming: ThemingIcon,
|
theming: ThemingIcon,
|
||||||
lightbulb: LightbulbIcon,
|
lightbulb: LightbulbIcon,
|
||||||
warning: WarningIcon,
|
warning: WarningIcon,
|
||||||
|
question: WarningIcon,
|
||||||
};
|
};
|
||||||
|
|
||||||
const iconStyles = {
|
const iconStyles = {
|
||||||
|
|||||||
118
app/data/docs/merise/modele-conceptuel-de-donnees/page.md
Normal file
118
app/data/docs/merise/modele-conceptuel-de-donnees/page.md
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
---
|
||||||
|
title: Introduction à Merise
|
||||||
|
description: Parlons un peu de Merise, la fameuse méthodologie de modélisation pour la conception de bases de données.
|
||||||
|
tags: [Backend, Merise, BDD, MCD, MLD, MPD, SQL]
|
||||||
|
---
|
||||||
|
|
||||||
|
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 :
|
||||||
|
|
||||||
|
| Terme | Dé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**)_ | Attribut qui permet d'identifier une entité de manière unique _(ex: matricule)_ |
|
||||||
|
|
||||||
|
C'est tout un lexique à apprendre, mais pas de panique tu vas vite t'y habituer !
|
||||||
|
|
||||||
|
## Premières entités
|
||||||
|
|
||||||
|
Commençons par créer notre MCD avec les données que l'on a récupérées dans le dictionnaire de données !
|
||||||
|
En reprenant notre tableau précédent, on constate que l'on a :
|
||||||
|
|
||||||
|
- **Pomme de terre**
|
||||||
|
- **Salarié**
|
||||||
|
- **Vente**
|
||||||
|
|
||||||
|
Dans un premier temps, concentrons-nous sur les deux premières entités : **Pomme de terre** et **Salarié**.
|
||||||
|
|
||||||
|
On va donc créer deux rectangles, un pour chaque entité.
|
||||||
|
Dans chacune d'elles, on va ajouter les attributs que l'on a récupérés dans le dictionnaire de données.
|
||||||
|
|
||||||
|
On se retrouve donc avec un schéma similaire à celui-ci :
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
On a donc deux entités : **Pomme de terre** et **Salarié**.
|
||||||
|
Chacune d'elles contient les attributs que l'on a récupérés dans le dictionnaire de données.
|
||||||
|
|
||||||
|
Avant d'aller plus loin, on va analyser ce qu'on a fait.
|
||||||
|
|
||||||
|
### Entité "Pomme de terre"
|
||||||
|
|
||||||
|
L'entité **Pomme de terre** contient les attributs suivants :
|
||||||
|
|
||||||
|
- **Variété** : Nom de la variété de la pomme de terre
|
||||||
|
- **Stock** : Quantité de pommes de terre en stock
|
||||||
|
|
||||||
|
### Entité "Salarié"
|
||||||
|
|
||||||
|
L'entité **Salarié** contient les attributs suivants :
|
||||||
|
|
||||||
|
- **Matricule** : Numéro d'immatriculation du salarié
|
||||||
|
- **Nom** : Nom du salarié
|
||||||
|
- **Prénom** : Prénom du salarié
|
||||||
|
|
||||||
|
## Spécificité des attributs d'entité
|
||||||
|
|
||||||
|
C'est un bon début, mais il nous manque des choses !
|
||||||
|
Il est essentiel de pouvoir identifier une ressource de manière unique.
|
||||||
|
|
||||||
|
Côté base de données on parle souvent de **clé primaire** _(ou **primary key**)_, mais souvenons-nous que notre document doit rester compréhensible par le client.
|
||||||
|
On parlera donc de **discriminant** _(ou **déterminant**)_.
|
||||||
|
|
||||||
|
Si on regarde notre entité **Pomme de terre**, on peut se rendre compte que l'on n'a pas d'attribut qui permet d'identifier une pomme de terre de manière unique.
|
||||||
|
On va donc ajouter un nouvel attribut : **Code pomme de terre**.
|
||||||
|
|
||||||
|
Ce terme se veut simple et compréhensible par le client, mais il est important de lui expliquer que ce code est unique pour chaque pomme de terre.
|
||||||
|
On va donc ajouter cet attribut à notre entité **Pomme de terre**.
|
||||||
|
|
||||||
|
Pour l'entité **Salarié**, on a déjà un attribut qui permet d'identifier un salarié de manière unique : **Matricule**.
|
||||||
|
On va donc le garder tel quel, en le considérant comme un **discriminant**.
|
||||||
|
|
||||||
|
On va donc mettre à jour notre MCD avec les nouveaux attributs :
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Et déjà, c'est beaucoup mieux !
|
||||||
|
|
||||||
|
{% callout type="warning" title="Discriminant et ID" %}
|
||||||
|
|
||||||
|
Tu l'auras remarqué, je n'ai pas utilisé le terme `ID` pour désigner le **discriminant**.
|
||||||
|
La raison est simple : le terme `ID` est souvent utilisé pour désigner un identifiant **technique**.
|
||||||
|
|
||||||
|
Il ne s'agit pas d'une donnée réelle à proprement parler, mais d'un identifiant qui va nous permettre de retrouver une donnée dans la base de données.
|
||||||
|
|
||||||
|
Le client n'ayant pas besoin de savoir ce qu'est un identifiant technique, on va préférer utiliser le terme **discriminant** ou **déterminant**.
|
||||||
|
|
||||||
|
{% /callout %}
|
||||||
|
|
||||||
|
## Ressources supplémentaires
|
||||||
|
|
||||||
|
- [La vérité sur les id - Jean Prulière](https://jeanpruliere.medium.com/la-v%C3%A9rit%C3%A9-sur-les-id-507134adda12)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Prochaine étape, on parle du **MLD** _(Modèle Logique de Données)_ !
|
||||||
@ -50,6 +50,24 @@ Merise étant français, la plupart des outils internationaux ne sont pas adapt
|
|||||||
|
|
||||||
Pour toutes les rubriques suivantes, **Looping** sera utilisé comme outil.
|
Pour toutes les rubriques suivantes, **Looping** sera utilisé comme outil.
|
||||||
|
|
||||||
|
## Ressources
|
||||||
|
|
||||||
|
{% callout type="warning" title="Ressources disponibles sur internet" %}
|
||||||
|
|
||||||
|
**Attention !**
|
||||||
|
|
||||||
|
Beaucoup de ressources sur internet parlent de Merise, mais elles ne sont pas forcément justes.
|
||||||
|
|
||||||
|
Peu importe l'origine de la ressource, il est important de vérifier les informations et de ne pas se fier aveuglément à ce qui est écrit.
|
||||||
|
Je recommande énormément le livre [Guide pratique (4e édition)](https://www.editions-eni.fr/livre/merise-guide-pratique-4e-edition-modelisation-des-donnees-et-des-traitements-manipulations-avec-le-langage-sql-conception-d-une-application-mobile-android-ou-ios-9782409046667) de **Jean-Luc Baptiste**, aux **Éditions ENI**.
|
||||||
|
|
||||||
|
{% /callout %}
|
||||||
|
|
||||||
|
- [Looping](https://looping-mcd.fr/)
|
||||||
|
- [Mocodo](https://mocodo.net/)
|
||||||
|
- [La vérité sur les id - Jean Prulière](https://jeanpruliere.medium.com/la-v%C3%A9rit%C3%A9-sur-les-id-507134adda12))
|
||||||
|
- [Merise - Wikipedia](<https://fr.wikipedia.org/wiki/Merise_(informatique)>)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Prochaine étape, on parle du **dictionnaire de données** !
|
Prochaine étape, on parle du **dictionnaire de données** !
|
||||||
|
|||||||
@ -15,6 +15,7 @@ export const navigation = [
|
|||||||
links: [
|
links: [
|
||||||
{ title: "Introduction", href: "/docs/merise" },
|
{ title: "Introduction", href: "/docs/merise" },
|
||||||
{ title: "Dictionnaire de données", href: "/docs/merise/dictionnaire-de-donnees" },
|
{ title: "Dictionnaire de données", href: "/docs/merise/dictionnaire-de-donnees" },
|
||||||
|
{ title: "Modèle Conceptuel de Données", href: "/docs/merise/modele-conceptuel-de-donnees" },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|||||||
@ -9,7 +9,7 @@ const tags = {
|
|||||||
type: {
|
type: {
|
||||||
type: String,
|
type: String,
|
||||||
default: "note",
|
default: "note",
|
||||||
matches: ["note", "warning"],
|
matches: ["note", "warning", "question"],
|
||||||
errorLevel: "critical",
|
errorLevel: "critical",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
BIN
app/public/merise/mcd-1.webp
Normal file
BIN
app/public/merise/mcd-1.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 7.6 KiB |
BIN
app/public/merise/mcd-2.webp
Normal file
BIN
app/public/merise/mcd-2.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 10 KiB |
Loading…
Reference in New Issue
Block a user