๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Back-end/IDE & Tools

[ Mermaid ] Markdown ERD ๊ทธ๋ฆฌ๋Š” ๋ฒ•

 

 

 

 

 

 

๐Ÿงœ Mermaid๋กœ ERD ๊ทธ๋ฆฌ๊ธฐ 

 

Mermaid.js๋Š” ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ๋กœ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์ด๋‹ค. 

ERD(Entity Relationship Diagram)์„ ํฌํ•จํ•œ ๋‹ค์–‘ํ•œ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ์ง€์›ํ•˜๋ฉฐ, Markdown ํŒŒ์ผ ๋‚ด์—์„œ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์–ด ๊ฐœ๋ฐœ ๋ฌธ์„œํ™”์— ๋งค์šฐ ์œ ์šฉํ•˜๋‹ค. 

 

 

 

 

๊ธฐ๋ณธ ERD ๋ฌธ๋ฒ•

Mermaid์˜ ERD ์ž‘์„ฑ๋ฒ•์€ erDiagram ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ํ…Œ์ด๋ธ”(์—”ํ„ฐํ‹ฐ)๊ณผ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•˜๋ฉฐ, ํ…Œ์ด๋ธ”์˜ ํ•„๋“œ์™€ ์†์„ฑ์„ ๊ฐ„๋‹จํžˆ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค 

 

๊ธฐ๋ณธ ์˜ˆ์ œ

 

```mermaid
erDiagram 
    user {
        bigint id PK "์‚ฌ์šฉ์ž ID"
        varchar name "์ด๋ฆ„"
        varchar email "์ด๋ฉ”์ผ"
        timestamp reg_date "๋“ฑ๋ก์ผ"
    }

    post {
        bigint id PK "๊ฒŒ์‹œ๊ธ€ ID"
        varchar title "์ œ๋ชฉ"
        text content "๋‚ด์šฉ"
        bigint user_id FK "์‚ฌ์šฉ์ž ID"
        timestamp created_at "์ƒ์„ฑ์ผ"
    }

    user ||--o{ post : "์ž‘์„ฑ"
```

 

ํ…Œ์ด๋ธ” ์ •์˜ 

- ํ…Œ์ด๋ธ”๋ช… { ๋ฐ์ดํ„ฐํƒ€์ž… ํ•„๋“œ๋ช… ์ œ์•ฝ์กฐ๊ฑด "์„ค๋ช…" } ํ˜•์‹์œผ๋กœ ์ž‘์„ฑํ•œ๋‹ค 

- PK์™€ FK๋ฅผ ๋ช…์‹œํ•˜์—ฌ ํ…Œ์ด๋ธ” ๊ฐ„ ๊ด€๊ณ„๋ฅผ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

๊ด€๊ณ„ ์ •์˜ 

- ๊ด€๊ณ„ ํ‘œํ˜„์€ ํ…Œ์ด๋ธ”๋ช… ||--o{ ํ…Œ์ด๋ธ”๋ช… ํ˜•์‹์œผ๋กœ ์ž‘์„ฑํ•œ๋‹ค 

 

 1:1 ๊ด€๊ณ„  ||--|| 
 1:N ๊ด€๊ณ„  ||-o{
 N:1 ๊ด€๊ณ„  o{--||
 N:M ๊ด€๊ณ„ o{--o{

 

๊ด€๊ณ„ ๋ผ๋ฒจ

- ๊ด€๊ณ„์˜ ์˜๋ฏธ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ๊ด€๊ณ„ ์ •์˜ ๋’ค์— : "๋ผ๋ฒจ" ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค

 

์ฃผ์„

%% ์‚ฌ์šฉํ•˜์—ฌ ์ฃผ์„ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋‹ค

 

 

 

Mermaid ์Šคํƒ€์ผ๋ง ํ™œ์šฉ

Mermaid์—์„œ๋Š” ํ…Œ์ด๋ธ”์ด๋‚˜ ๋‹ค์ด์–ด๊ทธ๋žจ ์Šคํƒ€์ผ์„ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•ํ•  ์ˆ˜ ์žˆ๋‹ค. 

์˜ˆ๋ฅผ ๋“ค์–ด, ํ…Œ์ด๋ธ”์˜ ์ƒ‰์ƒ์ด๋‚˜ ํ…Œ๋‘๋ฆฌ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

```mermaid
erDiagram
    style user fill:#f9f, stroke:#333, stroke-width:2px;
    style post fill:#ff9, stroke:#333, stroke-width:2px;
```

 

 

 

VSCode Extensions ์ถ”์ฒœ

Markdown Preview Mermaid Suppot

VSCode์˜ Markdown ๋ฏธ๋ฆฌ๋ณด๊ธฐ์—์„œ Mermaid ๋‹ค์ด์–ด๊ทธ๋žจ์„ ๋žœ๋”๋งํ•˜๊ณ  ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•œ๋‹ค

 

https://marketplace.visualstudio.com/items?itemName=bierner.markdown-mermaid

 

Markdown Preview Mermaid Support - Visual Studio Marketplace

Extension for Visual Studio Code - Adds Mermaid diagram and flowchart support to VS Code's builtin markdown preview

marketplace.visualstudio.com

 

 

Mermaid Markdown Syntax Highlighting

Mermaid ์ฝ”๋“œ ๋ธ”๋ก์— ๋Œ€ํ•ด ๋ฌธ๋ฒ• ๊ฐ•์กฐ๋ฅผ ์ œ๊ณตํ•œ๋‹ค 

Mermaid ์ฝ”๋“œ ๋ธ”๋ก์„ ์‹๋ณ„ํ•˜๊ณ  ํ‚ค์›Œ๋“œ, ๋ฌธ์ž์—ด, ๋ณ€์ˆ˜ ๋“ฑ์„ ์ƒ‰์ƒ์œผ๋กœ ๊ตฌ๋ถ„

 

https://marketplace.visualstudio.com/items?itemName=bpruitt-goddard.mermaid-markdown-syntax-highlighting

 

Mermaid Markdown Syntax Highlighting - Visual Studio Marketplace

Extension for Visual Studio Code - Markdown syntax support for the Mermaid charting language

marketplace.visualstudio.com

 

 

 

 

 

์ถ”๊ฐ€ ๋ฌธ๋ฒ•์— ๋Œ€ํ•ด

๊ณต์‹ ์‚ฌ์ดํŠธ์— ๋‹ค์ด์–ด๊ทธ๋žจ ๋ณ„๋กœ ์„ค๋ช…์ด ์ž์„ธํžˆ ๋‚˜์™€์žˆ๋‹ค

 

https://mermaid.js.org/syntax/entityRelationshipDiagram.html

 

Entity Relationship Diagrams | Mermaid

 

mermaid.js.org