ER-диаграммы Mermaid

ER-диаграммы (Entity-Relationship) описывают структуру данных: сущности (таблицы), их атрибуты и связи между ними. В FlowEra они используются для документирования схем баз данных, API-ресурсов и структур данных.

Базовый синтаксис

erDiagram
    USER {
        uuid id PK
        string email UK
        string name
        timestamp created_at
    }

    TASK {
        uuid id PK
        uuid flow_id FK
        uuid assignee_id FK
        string title
        string status
        jsonb properties
        timestamp created_at
    }

    FLOW {
        uuid id PK
        uuid tenant_id FK
        string name
        uuid status_model_id FK
    }

    USER ||--o{ TASK : "назначена"
    FLOW ||--o{ TASK : "содержит"

Базовая ER-диаграмма

Типы атрибутов

После имени атрибута можно указать ключевое слово:

Ключевое словоОписание
PKPrimary Key
FKForeign Key
UKUnique Key
erDiagram
    PRODUCT {
        uuid id PK
        uuid tenant_id FK
        string name UK
        text description
        int[] tag_ids FK
        timestamp created_at
        timestamp updated_at
    }

Типы связей

Кардинальность описывается символами:

СимволЗначение
||Ровно один
|oНоль или один
}oНоль или много
}|Один или много

Связь строится так: Сущность1 кардинальность1--кардинальность2 Сущность2 : "метка"

erDiagram
    DEPARTMENT ||--o{ EMPLOYEE : "работает в"
    EMPLOYEE }|--|| ADDRESS : "живёт по адресу"
    EMPLOYEE o|--o{ PROJECT : "участвует в"

Пример: схема FlowEra

erDiagram
    TENANT {
        uuid id PK
        string name
        string slug UK
        timestamp created_at
    }

    USER {
        uuid id PK
        uuid tenant_id FK
        string email UK
        string name
        string role
    }

    FLOW {
        uuid id PK
        uuid tenant_id FK
        uuid status_model_id FK
        string name
        string description
    }

    STATUS_MODEL {
        uuid id PK
        uuid tenant_id FK
        string name
        jsonb statuses
    }

    ITEM {
        uuid id PK
        uuid flow_id FK
        uuid assignee_id FK
        string title
        string status
        jsonb properties
        timestamp created_at
        timestamp updated_at
    }

    FIELD_TEMPLATE {
        uuid id PK
        uuid flow_id FK
        string name
        string type
        bool required
        jsonb options
    }

    ITERATION {
        uuid id PK
        uuid flow_id FK
        string name
        date start_date
        date end_date
        string status
    }

    TENANT ||--o{ USER : "содержит"
    TENANT ||--o{ FLOW : "владеет"
    TENANT ||--o{ STATUS_MODEL : "определяет"
    FLOW }o--|| STATUS_MODEL : "использует"
    FLOW ||--o{ ITEM : "содержит"
    FLOW ||--o{ FIELD_TEMPLATE : "определяет"
    FLOW ||--o{ ITERATION : "планирует"
    USER ||--o{ ITEM : "назначена"

Схема данных FlowEra

Сущности без атрибутов

Если нужно показать только связи:

erDiagram
    USER ||--o{ ORDER : "делает"
    ORDER ||--|{ PRODUCT : "содержит"
    ORDER }o--|| ADDRESS : "доставляется"
    PRODUCT }o--|| CATEGORY : "принадлежит"

Советы

  • Используйте ER-диаграммы для документирования структуры API (ресурсы и их связи)
  • Указывайте PK/FK для ключевых полей — это сразу показывает связи
  • Разбивайте большие схемы на несколько диаграмм по доменам