Learning Platform
Глоссарий Troubleshooting
Урок 04.04 · 18 мин
Начальный
er-modelingnotationcrows-footuml

Нотации: Chen, Crow’s Foot, UML — сравнение

ER-модель — это сущности, атрибуты и связи. Но нарисовать их на диаграмме можно по-разному: какой фигурой обозначить сущность, как показать кардинальность, где разместить атрибуты. Эти соглашения о визуальном языке называются нотациями. Существуют три основные нотации ER-диаграмм — Chen, Crow’s Foot и UML class diagram, — и важно уметь читать любую из них, потому что в реальных проектах встречаются все три.

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

Chen notation

Нотация Чена (Chen notation) — историческая первая нотация, предложенная Питером Ченом в 1976 году вместе с самой идеей ER-моделирования. Она самая «многословная» и наглядная.

Как обозначаются элементы:

  • Сущность — прямоугольник;
  • Атрибут — овал, соединённый линией с сущностью; каждый атрибут — отдельный овал;
  • Связь — ромб между сущностями;
  • Кардинальность — подписи на линиях: «1», «N», «M».

Особенность Chen — атрибуты рисуются как отдельные овалы вокруг сущности. Это позволяет наглядно показывать виды атрибутов из прошлого урока: составной атрибут — овал с подовалами, многозначный — двойной овал, вычисляемый — пунктирный овал. Ни одна другая нотация не показывает типы атрибутов так выразительно.

Платой за наглядность является место. Сущность с десятью атрибутами в Chen — это прямоугольник, окружённый десятью овалами на линиях. Большая модель в нотации Chen занимает огромную площадь и быстро становится нечитаемой.

Нотация Chen — сущность, ромб-связь, овалы-атрибуты
Сущность (прямоугольник)В нотации Chen сущность — прямоугольник. Атрибуты рисуются вокруг неё отдельными овалами на линиях.
связь — это ромб
Связь (ромб)В нотации Chen связь обозначается ромбом между сущностями. Кардинальность подписывается на линиях: 1, N, M.
Сущность (прямоугольник)Вторая сущность связи. В нотации Chen у каждой сущности атрибуты-овалы располагаются вокруг неё.

Вывод по Chen: выразительная, отлично показывает типы атрибутов, хороша для обучения и раннего концептуального проектирования небольших моделей. Плохо масштабируется — для больших схем непрактична. В реальной индустрии сегодня используется редко, в основном в учебных материалах.

Crow’s Foot notation

Нотация Crow’s Foot («воронья лапка»), также называемая IE-нотацией (Information Engineering), — самый распространённый промышленный стандарт. Компактна и заточена под реальные базы данных.

Как обозначаются элементы:

  • Сущность — прямоугольник, обычно разделённый на части: имя сверху, список атрибутов внутри (атрибуты — строки текста, а не овалы);
  • Связь — линия между сущностями;
  • Кардинальность — символы на концах линии.

Главная особенность — символы кардинальности на концах линий. Их называют «вороньей лапкой» по виду символа «многие». Каждый конец линии несёт два символа: внутренний (ближе к сущности) — про минимум, внешний — про максимум.

  • «Воронья лапка» (три расходящиеся линии) — много (максимум: многие);
  • одна поперечная чёрточка — один (максимум: один);
  • кружок (окружность) — ноль (минимум: необязательно);
  • ещё одна чёрточка у сущности — один (минимум: обязательно).

Комбинации читаются так: чёрточка + лапка — «один или много»; кружок + лапка — «ноль или много»; чёрточка + чёрточка — «ровно один»; кружок + чёрточка — «ноль или один».

Crow's Foot — символы кардинальности на концах линии
КлиентСущность в нотации Crow's Foot — прямоугольник с именем сверху и атрибутами строками внутри. У этого конца связи — символ 'один'.
один-ко-многим
ЗаказВторая сущность. У этого конца связи — символ 'воронья лапка', означающий 'многие'. Внутренний символ задаёт минимум.

Преимущества Crow’s Foot: компактность (атрибуты строками внутри прямоугольника, а не овалами), очень точное выражение кардинальности и оптциональности через символы на концах, хорошая масштабируемость на большие схемы. Именно поэтому это стандарт большинства инструментов моделирования (dbdiagram.io, ER/Studio и другие) и стандарт индустрии.

Слабая сторона: Crow’s Foot не показывает типы атрибутов так наглядно, как Chen, и слабее в выражении наследования (supertype/subtype) — для иерархий приходится использовать дополнительные соглашения.

TIP

Если вы изучаете только одну нотацию досконально — изучайте Crow’s Foot. Это де-факто стандарт индустрии: именно её вы встретите в большинстве рабочих проектов и инструментов. Курс по умолчанию использует идею Crow’s Foot при разговоре о кардинальности. Главный навык — мгновенно читать символы на концах линии: лапка означает «многие», чёрточка — «один», кружок — «ноль/необязательно».

UML class diagram

Диаграмма классов UML (UML class diagram) — нотация из языка UML (Unified Modeling Language), который изначально создан для проектирования объектно-ориентированных программ, но применяется и для моделирования данных.

Как обозначаются элементы:

  • Сущность — класс: прямоугольник из трёх секций (имя, атрибуты, методы; для данных секция методов обычно пустует);
  • Связь — линия (ассоциация) между классами;
  • Кардинальность — числовая кратность (multiplicity) на концах линий: 1, 0..1, 1..*, *, 0..*.

UML выражает кардинальность числами, а не символами. 1..* означает «один или много», 0..1 — «ноль или один», * — «любое число». Это точнее символов: можно задать и конкретные диапазоны, например 1..5.

Сильная сторона UML — богатство в выражении сложных отношений. UML напрямую поддерживает наследование (то самое supertype/subtype из прошлого урока), а также агрегацию и композицию — особые виды связи «часть-целое» разной силы. Для моделей со сложными иерархиями UML выразительнее Crow’s Foot.

UML class diagram — классы и числовая кратность
Класс КлиентВ UML сущность — класс: прямоугольник из трёх секций. Кратность связи задаётся числами, например 1.
ассоциация
Класс ЗаказВторой класс. Кратность задаётся числами: 1..* означает один или много, 0..1 — ноль или один, * — любое число.

Слабая сторона UML для моделирования данных — он создан для ООП, и часть его возможностей (методы, видимость атрибутов) к данным неприменима. Для чистого моделирования баз данных UML иногда избыточен. Его выбирают, когда модель данных — часть общего проектирования системы в UML, и хочется единого языка.

Сравнение трёх нотаций

АспектChenCrow’s FootUML class diagram
Сущностьпрямоугольникпрямоугольник с атрибутами-строкамикласс из трёх секций
Атрибутыотдельные овалыстроки внутри прямоугольникастроки в секции класса
Связьромблиниялиния-ассоциация
Кардинальностьподписи 1, N, Mсимволы на концах (лапка, чёрточка, кружок)числовая кратность (1, 0..1, 1..*)
Компактностьнизкаявысокаясредняя
Типы атрибутовпоказывает наглядноне показываетчастично
Наследованиеслабослабосильно
Масштабируемостьплохаяхорошаяхорошая
Где применяетсяобучение, ранний дизайниндустриальный стандартпроектирование в UML

Как выбрать нотацию

Выбор нотации зависит от задачи и аудитории:

  • Обучение, объяснение базовых понятий, ранний концептуальный набросок небольшой модели — Chen. Её наглядность (особенно показ типов атрибутов) ценна, когда модель маленькая и важно объяснить.
  • Проектирование реальной базы данных, рабочая модель, общение в команде — Crow’s Foot. Компактность, точность кардинальности и масштабируемость делают её рабочей лошадкой индустрии.
  • Модель данных как часть большого проекта системы, где уже используется UML; модели со сложными иерархиями наследования — UML class diagram. Единый язык с остальным проектированием и сильная поддержка наследования.
NOTE

Нотация — это форма, а не содержание. Одну и ту же модель (те же сущности, связи, кардинальности) можно записать во всех трёх нотациях, и это будет одна модель. Поэтому не зацикливайтесь на нотации: важно правильно спроектировать модель, а нарисовать её можно в любой. Главный практический навык — уметь ПРОЧИТАТЬ любую из трёх, потому что в чужих проектах и документации вам встретятся все. Рисовать достаточно уметь в одной — обычно Crow’s Foot.

ER-диаграммы в data governance — как модели используются в каталогах

Попробуй сам

Возьмите простую модель из двух сущностей со связью один-ко-многим — например, Автор и Книга (один автор написал много книг, у каждой книги один автор; у Автора атрибуты id, имя; у Книги id, название, год). Нарисуйте эту модель от руки трижды — в каждой из трёх нотаций. В Chen используйте прямоугольники, ромб для связи и овалы для атрибутов, подпишите 1 и N. В Crow’s Foot — прямоугольники с атрибутами внутри, линию со символами «лапка» и «чёрточка» на концах. В UML — классы из секций, линию с кратностью 1 и 1..*. Сравните три рисунка: какой компактнее, какой нагляднее, какой вам было проще рисовать. Затем откройте dbdiagram.io и постройте ту же модель там — обратите внимание, какую нотацию использует инструмент.


Проверка знанийKnowledge check
Сравните нотации Chen и Crow's Foot: чем они отличаются в изображении атрибутов и кардинальности, и почему Crow's Foot стала промышленным стандартом, а Chen используется в основном в обучении?
ОтветAnswer
Нотации Chen и Crow's Foot отличаются в двух ключевых аспектах. Атрибуты: в Chen каждый атрибут рисуется отдельным овалом, соединённым линией с прямоугольником сущности, что позволяет наглядно показывать виды атрибутов (составной — овал с подовалами, многозначный — двойной овал, вычисляемый — пунктирный); в Crow's Foot атрибуты — это просто строки текста внутри прямоугольника сущности, типы атрибутов так наглядно не показываются. Кардинальность: в Chen она задаётся подписями «1», «N», «M» на линиях; в Crow's Foot — символами на концах линии: «воронья лапка» означает «многие», поперечная чёрточка — «один», кружок — «ноль/необязательно», причём два символа на конце задают и минимум, и максимум. Crow's Foot стала промышленным стандартом, потому что она компактна (атрибуты строками, а не овалами), очень точно выражает кардинальность и оптциональность через символы, и хорошо масштабируется на большие схемы — поэтому её используют большинство инструментов моделирования и реальные проекты. Chen, наоборот, очень многословна: сущность с десятью атрибутами окружена десятью овалами, большая модель занимает огромную площадь и становится нечитаемой. Зато её наглядность ценна для обучения и раннего концептуального проектирования небольших моделей, где важно объяснить понятия. Нотация — это форма записи: одну модель можно нарисовать в любой из них.

Проверьте понимание

Результат: 0 из 0
Концептуальный
Вопрос 1 из 4. Чем нотация Crow's Foot изображает кардинальность связи?

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 5