# ERD

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

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

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

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

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

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

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

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

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

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

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

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

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

<figure><img src="https://2564959216-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBU59MeGnFEovSrJJ0r4f%2Fuploads%2Fvt4OVjXJbu8cxQEFkyhE%2Fosi%20(7).jpg?alt=media&#x26;token=3c9d3f06-c5f1-4efa-b795-42c6ee7e974c" alt="" width="563"><figcaption><p>Нотация Чана</p></figcaption></figure>

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

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

<figure><img src="https://2564959216-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBU59MeGnFEovSrJJ0r4f%2Fuploads%2Fv281rtOvtwFjG8fTJbGD%2Fosi%20(8).jpg?alt=media&#x26;token=534adad8-17a7-4b6e-8c84-b548dd7b5fc4" alt="" width="563"><figcaption><p>Нотация Мартина</p></figcaption></figure>

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

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

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

<figure><img src="https://2564959216-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBU59MeGnFEovSrJJ0r4f%2Fuploads%2FhicEx3DlOD7cDjtN7RjU%2Fosi%20(9).jpg?alt=media&#x26;token=18b2c681-a85c-4083-b2b4-b01b05829496" alt="" width="375"><figcaption><p>"Вороньи лапки"</p></figcaption></figure>

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

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

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

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

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

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

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

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

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

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

* 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/>
