# Mermaid Diagram Syntax Guide (Antigravity & VS Code Compatible) Both Antigravity and Visual Studio Code (via Markdown preview extensions) natively render Mermaid diagrams. To avoid syntax or parsing errors, follow these strict templates. --- ## 1. MCD Diagram Template (`flowchart LR` or `flowchart TD`) Merise MCDs represent **Entities** (rectangles) and **Associations** (rounded/ovals) connected by lines labeled with `(min,max)` cardinalities. ### Syntax Guidelines 1. Always quote edge labels containing commas: `---|"1,N"|` (unquoted commas can break Mermaid parsers). 2. Use `
` for line breaks inside node labels. 3. Keep entity attributes clean with a separator (`---`). 4. Association nodes use double parentheses `((Name))` or stadium brackets `([Name])`. ### Code Example ```mermaid flowchart LR %% ENTITIES CUSTOMER["CUSTOMER
-------------------
+ CUS_ID (Identifiant)
- CUS_FIRST_NAME
- CUS_LAST_NAME
- CUS_EMAIL"] ORDER["ORDER
-------------------
+ ORD_ID (Identifiant)
- ORD_DATE
- ORD_TOTAL_AMOUNT"] PRODUCT["PRODUCT
-------------------
+ PRO_ID (Identifiant)
- PRO_NAME
- PRO_PRICE"] %% ASSOCIATIONS ASSOC_PASS(["PASSER / PLACE"]) ASSOC_CONT(["CONTENIR / CONTAIN
-------------------
- ITE_QUANTITY
- ITE_UNIT_PRICE"]) %% CARDINALITIES CUSTOMER ---|"0,N"| ASSOC_PASS ASSOC_PASS ---|"1,1"| ORDER ORDER ---|"1,N"| ASSOC_CONT ASSOC_CONT ---|"0,N"| PRODUCT %% STYLING classDef entity fill:#e1f5fe,stroke:#0288d1,stroke-width:2px,color:#01579b; classDef assoc fill:#fff3e0,stroke:#f57c00,stroke-width:2px,color:#e65100; class CUSTOMER,ORDER,PRODUCT entity; class ASSOC_PASS,ASSOC_CONT assoc; ``` --- ## 2. MLD Diagram Template (`erDiagram`) Merise MLDs represent normalized relational tables with explicit types, primary keys (`PK`), and foreign keys (`FK`). ### Syntax Guidelines 1. In Mermaid `erDiagram`, data types must be single tokens without spaces (e.g. `VARCHAR`, `INT`, `DECIMAL`, `TIMESTAMP`, `BOOLEAN`). Do not write `VARCHAR(100)` directly in the type position if your renderer strictly checks tokens; use `VARCHAR` or `VARCHAR_100`. 2. Always assign `PK` and `FK` flags. 3. Relationship lines indicate relational cardinality (Crow's Foot notation): - `||--o{`: Exactly one to zero or many (1 to 0..N) - `||--|{`: Exactly one to one or many (1 to 1..N) - `|o--o{`: Zero or one to zero or many (0..1 to 0..N) - `||--||`: Exactly one to exactly one (1 to 1) ### Code Example ```mermaid erDiagram ECO_CUSTOMER { INT CUS_ID PK VARCHAR CUS_FIRST_NAME VARCHAR CUS_LAST_NAME VARCHAR CUS_EMAIL TIMESTAMP CUS_CREATED_AT } ECO_ORDER { INT ORD_ID PK INT ORD_CUS_ID FK "References ECO_CUSTOMER" TIMESTAMP ORD_DATE DECIMAL ORD_TOTAL_AMOUNT VARCHAR ORD_STATUS } ECO_PRODUCT { INT PRO_ID PK VARCHAR PRO_NAME DECIMAL PRO_PRICE INT PRO_STOCK_QUANTITY } ECO_ORDER_ITEM { INT ITE_ORD_ID PK,FK "References ECO_ORDER" INT ITE_PRO_ID PK,FK "References ECO_PRODUCT" INT ITE_QUANTITY DECIMAL ITE_UNIT_PRICE } ECO_CUSTOMER ||--o{ ECO_ORDER : "places" ECO_ORDER ||--|{ ECO_ORDER_ITEM : "contains" ECO_PRODUCT ||--o{ ECO_ORDER_ITEM : "ordered_in" ``` --- ## 3. Markdown Formatting in `db/mcd.md` and `db/mld.md` - Enclose every diagram inside triple backticks with `mermaid`: ````markdown ```mermaid flowchart LR ... ``` ```` - Never mix raw HTML script tags; use native Markdown and Mermaid notation.