# ERD

{% hint style="info" %}
**Схема «сущность-связь» (также ERD или ER-диаграмма)** — это разновидность блок-схемы, где показано, как разные «сущности» (люди, объекты, концепции и так далее) связаны между собой внутри системы.&#x20;
{% endhint %}

ER-диаграммы чаще всего применяются для проектирования и отладки **реляционных баз данных**.

## Уровни детализации

1. **Концептуальная модель данных**

Первая верхнеуровневая модель для представления новой предметной области будущего проекта: что в ней есть и с чем нужно работать.

ER-модель концептуального уровня нужна системному аналитику и заказчику, чтобы проверить, все ли термины учтены. Поэтому системный аналитик, как правило, создаёт её самостоятельно и не привлекает технических специалистов из команды разработки.

2. **Логическая модель данных**

На этом уровне детализируют данные из концептуальной модели: к сущностям добавляют характеристики — атрибуты.

Модель логического уровня тоже составляет системный аналитик, но уже не в одиночку. К работе подключают технических специалистов ― разработчика или архитектора баз данных. Готовую логическую ER-модель нужно презентовать команде разработки. Разработчики проверяют, чтобы аналитик ничего не упустил, и согласовывают модель.

3. **Физическая модель данных**

На этом уровне описывают, как будет организована работа с данными: выбирают тип базы, её содержание и где данные будут хранить. Например, выбирают реляционный тип базы данных и СУБД для работы с ней, перечисляют таблицы в базе и определяют, что она будет храниться на внутреннем сервере компании.\
\
Над ER-моделью физического уровня в большей степени работают архитектор баз данных и разработчики, а системный аналитик только помогает в процессе.

## Нотация Чена

Классическая нотация, которая состоит из простых символов — прямоугольников, овалов и линий. Из-за этого нотацию часто используют для концептуальных моделей, которые презентуют заказчику. Человеку, который далёк от аналитики данных, проще разобраться в понятных диаграммах со знакомыми символами.

<figure><img src="/files/Lwd2kBa9BCobBfUaQoXb" alt="" width="563"><figcaption><p>Нотация Чана</p></figcaption></figure>

## Нотация Мартина

Её ещё называют «воронья лапка» (от англ. Crow's Foot). Она компактнее нотации Чена, поэтому её используют для построения ER-моделей физического уровня, когда нужно описать в модели все атрибуты сущностей.

<figure><img src="/files/LMNU7wqrWLoiK6u2U1be" alt="" width="563"><figcaption><p>Нотация Мартина</p></figcaption></figure>

### Кардинальность и ординальность

Под кардинальностью подразумевается максимальное число связей, которое может быть установлено между экземплярами разных сущностей. Ординальность, в свою очередь, указывает минимальное количество связей между экземплярами двух сущностей.

Кардинальность и ординальность отображаются на соединительных линиях согласно выбранному формату нотации.

<figure><img src="/files/tPhisOyBuIIeNeVDDBJX" alt="" width="375"><figcaption><p>"Вороньи лапки"</p></figcaption></figure>

## Как создать ER‑диаграмму

1. **Определить сущности**

Чтобы собрать все сущности будущего проекта, системные аналитики общаются с заказчиком и будущими пользователями ПО: сотрудниками или клиентами компании. На этом этапе обычно создают концептуальную модель и согласовывают её с заказчиком.

2. **Определить атрибуты**

Системный аналитик детализирует информацию, собранную во время интервью, и описывает характеристики сущностей. Если данных не хватает, нужно повторно опросить заинтересованных лиц.

3. **Определить связи между сущностями и их типы**

На этом этапе выясняют, какие сущности и как связаны между собой. Например: «один-к-одному» или «один-ко-многим» или «многие-ко-многим».

5. **Проверить ER-модель**

После завершения работы над ER-моделью системный аналитик проверяет, нет ли в ней лишних сущностей, дубликатов данных и косвенных связей между данными в одной таблице. Такую проверку называют [нормализацией данных](/hard-skills/bazy-dannykh/relyacionnye/normalnye-formy.md).

## Примеры инструментов

* dbdiagram.io (<https://dbdiagram.io/d>)

Источники:&#x20;

* <https://www.lucidchart.com/pages/ru/erd-%D0%B4%D0%B8%D0%B0%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0>
* <https://practicum.yandex.ru/blog/chto-takoe-er-diagramma/>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.system-analyst-base.ru/hard-skills/proektirovanie/notacii-i-diagrammy/erd.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
