Описание
ERD (Entity-Relationship Diagram) описывает структуру данных предметной области: объекты (сущности), их характеристики (атрибуты) и связи между ними. Модель предложена П. Ченом в 1976 году [7]. Сегодня распространены нотации Чена (концептуальное моделирование) и «воронья лапка» (Crow's Foot) Г. Эверета, а также IDEF1X [12] – для логических и физических моделей баз данных.
В моделировании бизнес-процессов ERD отвечает на вопрос, о каких объектах процесс хранит информацию, и служит основой для проектирования базы данных автоматизируемой системы [20].
Когда применять: проектирование базы данных, согласование терминов предметной области, анализ информационных объектов процесса.
Ограничения: не описывает действия, последовательность и участников процесса.
Элементы нотации
| Элемент | Нотация Чена | «Воронья лапка» | Назначение |
|---|---|---|---|
| Сущность | класс объектов: Клиент, Заказ | ||
| Атрибут | свойство сущности | ||
| Первичный ключ | уникальный идентификатор экземпляра | ||
| Внешний ключ | – | ссылка на первичный ключ другой сущности | |
| Связь | отношение между сущностями | ||
| Кардинальность | сколько экземпляров участвует в связи |
Правила составления
- Сущности называются существительными в единственном числе.
- У каждой сущности определяется первичный ключ.
- Для каждой связи указываются кардинальность (1:1, 1:N, M:N) и обязательность участия.
- Связи «многие ко многим» на логическом уровне разрешаются промежуточной сущностью.
- Модель нормализуется (как правило, до третьей нормальной формы) – каждый факт хранится в одном месте.
- Вычисляемые значения хранятся, только если это оправдано: например, сумма заказа фиксируется на момент оформления, потому что цены товаров со временем меняются.
Пример: данные процесса обработки заказа (нотация «воронья лапка»)
Сущности и связи интернет-магазина; цена в «Позиции заказа» и сумма в «Заказе» хранятся на момент оформления. Диаграмма описана кодом в Mermaid [14].
erDiagram
CUSTOMER["Клиент"] {
int id PK
string name "ФИО"
string phone "телефон"
string email "почта"
}
ORDER["Заказ"] {
int id PK
int customer_id FK
date created_at "дата"
string status "статус"
decimal total "сумма"
}
ORDER_ITEM["Позиция заказа"] {
int id PK
int order_id FK
int product_id FK
int quantity "количество"
decimal price "цена"
}
PRODUCT["Товар"] {
int id PK
string title "наименование"
decimal price "цена"
int stock "остаток"
}
PAYMENT["Платёж"] {
int id PK
int order_id FK
decimal amount "сумма"
date paid_at "дата оплаты"
}
DELIVERY["Доставка"] {
int id PK
int order_id FK
int courier_id FK
string address "адрес"
date delivered_at "дата доставки"
}
COURIER["Курьер"] {
int id PK
string name "ФИО"
}
CUSTOMER ||--o{ ORDER : "оформляет"
ORDER ||--|{ ORDER_ITEM : "содержит"
PRODUCT ||--o{ ORDER_ITEM : "входит в"
ORDER ||--o| PAYMENT : "оплачивается"
ORDER ||--o| DELIVERY : "доставляется"
COURIER ||--o{ DELIVERY : "выполняет"Ссылки на источники
Номера совпадают с общим списком источников.
- [7] Chen, P. P. The Entity-Relationship Model – Toward a Unified View of Data / P. P. Chen // ACM Transactions on Database Systems. – 1976. – Vol. 1, № 1. – P. 9–36.
- [12] Integration Definition for Information Modeling (IDEF1X) : Federal Information Processing Standards Publication 184 / National Institute of Standards and Technology. – Gaithersburg, 1993. – URL: https://nvlpubs.nist.gov/nistpubs/Legacy/FIPS/fipspub184.pdf (дата обращения: 17.10.2026).
- [14] Mermaid : diagramming and charting tool : сайт. – URL: https://mermaid.js.org (дата обращения: 17.10.2026).
- [20] What Is an Entity Relationship Diagram? // Lucid : сайт. – URL: https://lucid.co/diagram/erd/tutorial (дата обращения: 17.10.2026).