Перейти к основному содержимому

ER-диаграмма (Entity-Relationship Diagram)

ER-диаграмма (Entity-Relationship Diagram, ERD) — диаграмма "сущность-связь", которая применяется для:

  • проектирования БД, описания процессов и бизнес-логики
  • моделирования структуры данных и их связей в системах или приложениях
  • документирования требований

Составляющие элементы ERD

  • Сущности — объекты (например, пользователь, заказ)
  • Атрибуты — характеристики сущностей (имя, дата заказа)
  • Связи — отображают, как сущности связаны друг с другом (пользователь делает заказ)

Типы связей между сущностями

  • Один-к-одному (1:1): каждая запись в одной сущности соответствует одной записи в другой
  • Один-ко-многим (1:M): одна запись в сущности соответствует нескольким записям в другой
  • Многие-ко-многим (M:M): каждая запись в одной сущности связана с несколькими записями в другой, и наоборот

Пример ERD для интернет-магазина

Сущности: пользователь, заказ, товар

Атрибуты:

  • пользователь: ID, имя, email
  • заказ: ID заказа, дата, сумма
  • товар: ID товара, название, цена

Связи:

  • пользователь делает заказ (один пользователь может сделать много заказов — связь "один ко многим")
  • заказ содержит товары (один заказ может включать много товаров — связь "многие ко многим")

Уровни ER-диаграмм

ER-диаграммы делятся на 3 уровня в зависимости от уровня детализации:

  • Концептуальный: описывает общую структуру данных без технических деталей. Показывает, какие сущности и связи существуют. Применяется на стадии сбора требований и анализа для обсуждения с бизнесом и заказчиками.
  • Логический: уточняет атрибуты сущностей и типы связей. Детализирует модель, но не привязан к конкретной СУБД. Используется на этапе уточнения требований и согласования структуры данных.
  • Физический: описывает, как данные будут реализованы в БД, с учётом таблиц, индексов, первичных и внешних ключей. Используется на этапе реализации и разработки БД.

Нотации ERD

ER-диаграмма — визуальная модель или схема, а нотации — методы, с помощью которых она строится.

  • Нотация IDEF1X: фундаментальная, используется для физического уровня, ориентирована на стандарты реляционных БД. Редко используется на практике
    • сущности: прямоугольники с именем сущности
    • связи: линии с символами "лапками" для связи один-ко-многим, "палка" для связи один-к-одному
    • атрибуты: внутри прямоугольников сущностей
  • Нотация Чена: классическая нотация, часто используется для концептуальных моделей
    • сущности: прямоугольники
    • связи: ромбы, соединены линиями с сущностями
    • атрибуты: овалы, соединены линиями с сущностями
  • Нотация Мартина ("воронья лапка"): компактнее нотации Чена, используется для логического уровня, когда нужно описать все атрибуты сущностей
    • сущности: прямоугольники с атрибутами внутри
    • связи: линии с "лапками вороны" для связи один-ко-многим и палочкой для связи один-к-одному
    • атрибуты: внутри сущностей, первичные ключи выделены отдельной строкой

Отличия от других инструментов

  • UML-диаграммы классов: нужны для моделирования объектов и их поведения в объектно-ориентированном программировании, а не для реляционных БД
    • UML отражают методы (функции) классов
    • ERD показывают только структуру данных и их взаимосвязи
  • Data Flow Diagram (DFD): фокус на потоках данных между процессами и системами, а не на структуре самих данных
    • DFD описывает, как данные перемещаются и обрабатываются
    • ERD отображают данные в статичном виде их сущности и связи
  • BPMN: моделируют бизнес-процессы и последовательность действий, а не данные
    • BPMN отображает шаги процесса и участников
    • ERD — только структуру данных и их отношения внутри системы

Инструменты для ERD

  • Draw.io (онлайн, бесплатный) — есть интеграция с облачными сервисами
  • Lucidchart ER (онлайн, бесплатный тариф с ограничениями) — поддерживает совместную работу
  • DBeaver (Community Edition) (оффлайн, бесплатный) — для работы с БД, поддерживает авто-создание ERD
  • drawSQL (онлайн, бесплатный тариф с ограничениями) — можно моделировать структуру БД
  • Miro (онлайн, бесплатный тариф с ограничениями) — есть доска для команды

Подборка материалов по теме ER-диаграмм

  1. Сущности и связи: как и для чего системные аналитики создают ER‑диаграммы
  2. Что такое ER-диаграмма и как ее создать?
  3. Проектирование ER-диаграммы
  4. Что выбрать для проектирования БД: сравнение UML-диаграммы классов и ER-диаграммы
  5. Модель диаграммы Entity Relations (ER) с примером СУБД
  6. Пример построения ER-модели и SQL-запросов к ней
  7. Учимся проектированию Entity Relationship-диаграмм
  8. Как создать ER-диаграмму
  9. Методика построения ER-диаграммы для базы данных
  10. Диаграммы «сущность – связь» (ERD). Типы отношений. Построение схемы базы данных на основе ERD диаграмм
  11. Нотация Мартина (Crow's Foot)
  12. Методология Питера Чена
  13. Нотация Мартина для ER-диаграмм
  14. Методика IDEF1X
  15. Нотация IDEF1

Инструменты

  • SmartDraw ER (онлайн/оффлайн, пробная версия) — редактор диаграмм, богатый набор шаблонов
  • Microsoft Visio (оффлайн, пробная версия) — для профессиональных диаграмм
  • Miro (онлайн, бесплатный тариф с ограничениями) — доска для командной работы, позволяет создавать любые диаграммы
  • EdrawMax (онлайн/оффлайн, пробная версия) — редактор диаграмм, поддерживает несколько нотаций ER
  • DbSchema (онлайн/оффлайн, пробная версия) — для визуального проектирования БД с поддержкой ERD и интеграции с СУБД

Видео

  1. Что такое ERD за 9 минут
  2. Топ 10 инструментов для построения ERD
  3. Типы связей в базах данных
  4. ER-диаграммы в нотации Питера Чена
  5. Модель сущность связь, ER диаграмма
  6. Курс «Системный аналитик» | Урок 10: Данные, ER-диаграмма
  7. Модуль 9. Создаем ER-диаграмму
  8. Реляционная модель данных, ER диаграмма. Базы данных