Основы моделирования: введение в нотацию IDEF1X
Мы переходим к теоретическим основам, чтобы сформировать набор понятий и терминов для дальнейшей работы. Нам предстоят три ключевые лекции, которые дадут необходимый минимум знаний для решения практических задач моделирования. Глубокого погружения в математические основы, такие как теория множеств или булева алгебра, не потребуется.
Эта лекция посвящена
нотации моделирования — методологии и символам для изображения структур баз данных. Единая нотация нужна, чтобы все участники процесса: коллеги, подрядчики или заказчики, — одинаково понимали, что изображено на схеме. Мы будем работать с одной из самых распространенных нотаций —
IDEF1X.
Мы рассмотрим основные понятия:
сущность,
атрибут и
отношение, правила их определения, базовые принципы формирования информационной модели и разберем простой пример.
Ключевая концепция «Сущность-связь» и диаграмма ERD
Методология IDEF1X — это язык, основанный на концепции «сущность-связь» (
Entity-Relationship). Согласно ей, схема базы данных изображается как набор сущностей (на бытовом уровне их можно условно считать таблицами) и связей между ними. Результатом такого подхода является
диаграмма «сущность-связь», или
ERD (Entity-Relationship Diagram). Она обеспечивает стандартный способ определения данных и отношений между ними.
В рамках этой концепции мы оперируем тремя ключевыми понятиями:
1.
Сущность (Entity)
2.
Отношение, или связь (Relationship)
3.
Атрибут (Attribute)
Что такое сущность
Сущность — это множество реальных или абстрактных объектов (людей, мест, событий, предметов), обладающих общими атрибутами или характеристиками. Это понятие крайне абстрактное. Оно не обязательно должно иметь физическое воплощение. Например, в системе аренды автомобилей сущностью будет и сам «Автомобиль», и «Клиент», и даже процесс «Заказ» на аренду.
С точки зрения моделирования, сущность — это не конкретный объект, а их
тип. База данных создается для сбора информации о множестве похожих объектов. Поэтому не заводят отдельную таблицу для каждого человека, а создают одну общую сущность, например, «Клиенты» или «Сотрудники», которая будет содержать множество идентичных по набору атрибутов экземпляров.
Конкретный объект этого типа называется
экземпляром сущности. Например, для сущности «Студент» экземпляром будет «студент Иванов Иван Иванович».
Уровень абстракции, на котором определяется сущность, полностью зависит от разработчика модели, действующего в сговоре с заказчиком и в рамках конкретной
предметной области. Важно вовремя остановиться, чтобы, с одной стороны, решить прикладную задачу, а с другой — не перегрузить модель избыточными данными. Например, для карты лояльности магазина не нужны паспортные данные клиента или его ИНН.
Из этого следует важный вывод:
один и тот же физический объект (человек) в разных системах будет представлен разными сущностями и с разным набором атрибутов. В базе данных госорганов вы — одна сущность, а в базе розничного магазина — совершенно другая. Любой объект системы может быть представлен только одной сущностью, которая должна быть уникально идентифицируема.
Уникальная идентификация сущности
Среди всех атрибутов сущности должен быть такой, который однозначно определяет каждый ее экземпляр. Такой атрибут называется
уникальным идентификатором.
Идентификаторы бывают двух типов:
•
Естественный идентификатор. Продиктован самой предметной областью и взят из нее. Например, номер паспорта или ИНН для сущности «Гражданин» в государственной системе.
•
Суррогатный идентификатор (суррогатный ключ). Искусственно созданный, часто сгенерированный автоматически набор символов, единственная цель которого — обеспечить уникальность. Например, номер карты лояльности в магазине, где паспортные данные не используются.
Уникальный идентификатор не обязан быть простым и выраженным одним полем. Он может быть
составным, то есть представлять собой комбинацию нескольких атрибутов. Такой подход используют, когда нет одного естественного ключа.
Пример составного идентификатора. Если у нас нет документов (паспорт, ИНН), чтобы уникально определить человека, можно скомбинировать:
1. Фамилия
2. Имя
3. Отчество
4. Полная дата рождения
5. Место рождения
6. Имя матери (роженицы)
Вероятность полного совпадения всех этих полей у двух разных людей крайне мала. Такой набор образует
сложный,
комбинированный идентификатор.
На практике, если количество полей в составном ключе становится слишком большим (более 3-4), обычно вводят суррогатный идентификатор для упрощения работы.
Атрибут как характеристика
Атрибут — это некая характеристика или свойство сущности, которое требуется сохранить. Например, сущность «Студент» может обладать атрибутами: «Фамилия», «Имя», «Отчество», «Дата рождения».
Главная задача при определении набора атрибутов — отобрать только те, которые необходимы для решения задач, поставленных в проекте. У любого объекта можно найти огромное количество свойств (вес, рост, цвет глаз). Включение в модель лишнего, ненужного атрибута — это проектная ошибка.
Последствия такой ошибки:
1.
Разреженные таблицы. Вы не сможете собрать информацию для этого атрибута, и поле останется пустым для большинства записей.
2.
Хранение мусора. Даже если вы заполните атрибут, данные не будут использоваться, занимая место.
3.
Плохой пользовательский опыт. Поле из анкеты с бессмысленным в контексте услуги вопросом (например, про вес при аренде авто) может отпугнуть пользователя. Это напрямую повлияет на конверсию и работу будущей системы.
Таким образом, технический этап моделирования напрямую влияет на бизнес-результаты и функциональность конечного продукта.
Отношения между сущностями
Отношение (связь) — это осмысленная ассоциация между двумя или более сущностями. Именовать отношение принято с помощью грамматического оборота с глаголом.
Пример. У нас есть сущность «Студент» (уникальный идентификатор — номер студенческого билета) и сущность «Оценки за экзамен». Они связаны отношением, которое можно выразить глаголом «получил». Таким образом, студент получил оценку.
Итак, мы имеем базовую картину мира для моделирования данных:
•
Сущности представляют собой базовые типы информации, хранимой в базе.
•
Атрибуты описывают их свойства.
•
Отношения показывают, как эти типы данных взаимосвязаны друг с другом.
Краткие итоги
Анализ материала показывает, что моделирование данных — это не техническое упражнение по рисованию таблиц, а фундаментальный процесс принятия решений, напрямую влияющий на успех будущей системы. Центральной проблемой является проблема
границ и определений. Выбор того, что считать сущностью, на каком уровне абстракции остановиться и какие атрибуты включить в модель, — это последовательность критических деловых решений, маскирующихся под техническую работу.
Первый ключевой вывод касается относительности восприятия данных. Один и тот же физический объект в разных системах будет представлен принципиально разными сущностями. Это означает, что универсальной, «правильной» модели не существует. Адекватность модели определяется исключительно её соответствием конкретной предметной области и задачам бизнеса. Практическая ценность этого понимания в том, что процесс моделирования должен начинаться не с рисования, а с глубокого анализа и договоренностей между разработчиком и заказчиком о границах проекта.
Второй вывод затрагивает проблему идентификации. Выбор между естественным и суррогатным ключом — это дилемма между доверием к реальному миру и контролем над системой. Естественный ключ делает данные понятными, но несет риск изменения реальных данных. Суррогатный ключ дает стабильность, но отрывает запись от её физического смысла. Использование составных ключей — мощный, но сложный в обслуживании инструмент. Понимание этих компромиссов позволяет разработчику выбирать стратегию идентификации осознанно, а не механически генерировать суррогатные ключи «на всякий случай».
Третий, наиболее важный для практики вывод, демонстрирует, как ошибка на этапе моделирования каскадно разрушает пользовательский опыт и бизнес-процессы. Добавление одного избыточного атрибута — это не безобидное действие. Оно порождает цепочку негативных последствий: замусоривает схему, создает требования для бесполезных полей в интерфейсе (анкетах, формах), вызывает у пользователя когнитивный диссонанс и, как следствие, снижает доверие и конверсию. Это доказывает, что архитектор данных косвенно проектирует взаимодействие с клиентом.
Таким образом, грамотное моделирование — это искусство ограничения и выбора. Умение вовремя остановиться, не перегружая модель «на всякий случай», и способность обоснованно выбрать метод идентификации — вот ключевые компетенции, отделяющие профессиональный подход от любительского. В основе этого лежит принцип, что база данных — это не склад всего подряд, а точно настроенный инструмент для решения конкретной задачи.
1. Сущность — это не физический объект, а его абстрактный тип в рамках задачи, определяемый предметной областью.
2. Один и тот же физический объект в разных системах представляется разными сущностями с разным набором свойств.
3. Уровень абстракции сущности должен быть достаточным для решения задачи, но не избыточным, чтобы избегать ненужных полей.
4. Уникальный идентификатор однозначно определяет каждый экземпляр сущности и может быть естественным или суррогатным.
5. Естественный идентификатор берется из самой предметной области (например, номер паспорта).
6. Суррогатный идентификатор — это искусственно созданное поле, генерируемое системой исключительно для уникальности.
7. Идентификатор может быть составным, то есть состоять из комбинации нескольких атрибутов для достижения уникальности.
8. Практическим пределом для использования составного ключа обычно является 3–4 атрибута, после чего предпочтительнее вводить суррогатный.
9. Атрибут — это хранимая характеристика сущности. В модель должны включаться только те атрибуты, которые критичны для бизнес-задач.
10. Включение избыточного атрибута напрямую вредит пользовательскому опыту и бизнес-показателям (конверсии).
11. Отношение (связь) — это осмысленная ассоциация между сущностями, именуемая с помощью глагольного оборота.
12. Концепция «сущность-связь» — это фундамент для построения диаграмм ERD (Entity-Relationship Diagram), обеспечивающих стандартный способ документирования модели данных.
1. В чем главная цель использования стандартных нотаций моделирования, таких как IDEF1X?
2. Почему понятие «сущность» считается сложно определимым и крайне абстрактным? Приведите пример «процесса» как сущности.
3. Чем сущность как тип принципиально отличается от своего экземпляра? Покажите разницу на примере.
4. Как предметная область влияет на определение сущности и уровень ее абстракции?
5. Почему для карты лояльности магазина паспортные данные обычно не включают в сущность «Клиент», а в госсистеме — включают?
6. Для чего нужен уникальный идентификатор сущности?
7. В чем ключевое различие и когда применяются естественный и суррогатный идентификаторы?
8. Что такое составной уникальный идентификатор и в каких случаях он может быть полезен?
9. Каковы негативные последствия включения в модель избыточных, не продиктованных бизнес-задачей атрибутов?
10. Каким образом решение разработчика о списке атрибутов может повлиять на поведение конечного пользователя?
11. Что называется отношением в контексте модели «сущность-связь»?
12. Какое лингвистическое правило используется для именования отношений?