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 : "содержит"

Типы атрибутов
После имени атрибута можно указать ключевое слово:
| Ключевое слово | Описание |
|---|---|
PK | Primary Key |
FK | Foreign Key |
UK | Unique 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 : "назначена"

Сущности без атрибутов
Если нужно показать только связи:
erDiagram
USER ||--o{ ORDER : "делает"
ORDER ||--|{ PRODUCT : "содержит"
ORDER }o--|| ADDRESS : "доставляется"
PRODUCT }o--|| CATEGORY : "принадлежит"
Советы
- Используйте ER-диаграммы для документирования структуры API (ресурсы и их связи)
- Указывайте PK/FK для ключевых полей — это сразу показывает связи
- Разбивайте большие схемы на несколько диаграмм по доменам