From 942e836787beb830787ff8a2e1c02095c24c1662 Mon Sep 17 00:00:00 2001 From: GauthierWebDev Date: Fri, 11 Apr 2025 13:11:10 +0200 Subject: [PATCH] docs: Add Merise documentation page --- app/data/docs/merise/page.md | 49 ++++++++++++++++++++++++++++++++++++ app/database/todoItems.ts | 17 ------------- app/lib/navigation.ts | 4 +++ 3 files changed, 53 insertions(+), 17 deletions(-) create mode 100644 app/data/docs/merise/page.md delete mode 100644 app/database/todoItems.ts diff --git a/app/data/docs/merise/page.md b/app/data/docs/merise/page.md new file mode 100644 index 0000000..351a45f --- /dev/null +++ b/app/data/docs/merise/page.md @@ -0,0 +1,49 @@ +--- +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] +--- + +**Merise**, c'est quoi ? + +Il s'agit d'une **méthodologie** de **modélisation** française _(🐔)_, conçue pour la conception de **bases de données**. +Bien qu'elle ait été créée dans les années 70/80, elle est toujours d'actualité et largement utilisée dans le domaine de l'informatique. + +{% callout type="note" title="C'est dans les vieux pots qu'on fait la meilleure soupe" %} + +Ce n'est pas parce qu'une méthodologie est ancienne qu'elle est obsolète. +Au contraire, elle a fait ses preuves et est toujours pertinente aujourd'hui bien que surtout utilisée en France. + +Rien ne t'oblige à l'utiliser, mais il est bon de la connaître, surtout si tu préfères éviter de foncer dans le mur lors de la conception de ta base de données. + +{% /callout %} + +On parlera ici que de la partie **modélisation** de Merise, même si Merise comprend aussi des aspects d'**analyse** et de **gestion de projet**. + +## Les différentes schémas de Merise + +Merise se compose de plusieurs schémas qui permettent de représenter les données et leurs relations. + +1. **Dictionnaire de données** : Il contient toutes les informations sur les données métier qui seront stockées. +2. **MCD** _(Modèle Conceptuel de Données)_ : Il représente les données et les relations entre ces données. +3. **MLD** _(Modèle Logique de Données)_ : Il ajoute des détails techniques au MCD. +4. **MRD** _(Modèle Relationnel de Données)_ : Il est une représentation textuelle du MLD. +5. **MPD** _(Modèle Physique de Données)_ : Il ajoute les types de données et les contraintes spécifiques au SGBD utilisé. + +## Outils pour Merise + +Il existe de nombreux outils pour réaliser des MCD, MLD et MPD. + +Déjà, tu peux **bannir** tous les outils qui ne sont pas conçus pour Merise. +Merise étant français, la plupart des outils internationaux ne sont pas adaptés. + +### Outils non recommandés + +- **Draw.io** : Bien qu'il soit un bon outil, il n'est pas conçu pour Merise et ne respecte pas les normes de la méthodologie. +- **Lucidchart** : Même chose que Draw.io, il n'est pas conçu pour Merise. +- **DBDesigner** : Excellent outil, mais qui ne permet pas la réalisation d'un MCD ou d'un MLD correct. On pourra par contre l'utiliser pour le MPD ! + +### Outils recommandés + +- **[Looping](https://looping-mcd.fr/)** : Il s'agit de l'outil par **excellence** pour la conception de bases de données tout en respectant la méthodologie Merise. Cerise sur le gâteau, il est **gratuit** ! +- **[Mocodo](https://mocodo.net/)** : Un autre outil qui permet de réaliser des MCD et MLD. Il est extrêmement puissant et fonctionne sur le navigateur. Cependant, il manque de rigueur là où Looping excelle. diff --git a/app/database/todoItems.ts b/app/database/todoItems.ts deleted file mode 100644 index 5404680..0000000 --- a/app/database/todoItems.ts +++ /dev/null @@ -1,17 +0,0 @@ -interface TodoItem { - text: string; -} - -const todosDefault = [{ text: "Buy milk" }, { text: "Buy strawberries" }]; - -const database = - // We create an in-memory database. - // - We use globalThis so that the database isn't reset upon HMR. - // - The database is reset when restarting the server, use a proper database (SQLite/PostgreSQL/...) if you want persistent data. - // biome-ignore lint: - ((globalThis as unknown as { __database: { todos: TodoItem[] } }).__database ??= { todos: todosDefault }); - -const { todos } = database; - -export { todos }; -export type { TodoItem }; diff --git a/app/lib/navigation.ts b/app/lib/navigation.ts index 4018717..95e7279 100644 --- a/app/lib/navigation.ts +++ b/app/lib/navigation.ts @@ -10,4 +10,8 @@ export const navigation = [ title: "React", links: [{ title: "Introduction", href: "/docs/react" }], }, + { + title: "Merise", + links: [{ title: "Introduction", href: "/docs/merise" }], + }, ];