Основы моделирования и базы данных

Теоретические основы проектирования. Часть 5

Изложена логика перехода от функционального описания предметной области к модели данных в нотации IDEF1X. Показано, как входы, выходы и управления становятся сущностями, а функции – отношениями. На примере строительства садового домика последовательно разбираются: выделение потенциальных сущностей, отсев компонентов, задание атрибутов и первичных ключей, использование дискриминатора для категоризации, различия идентифицирующих и неидентифицирующих связей, а также семантика обязательной кардинальности. Даётся обзор типов сущностей, атрибутов и отношений.

Основные мысли

В результате изучения лекции слушатель будет способен:
1. Объяснять правила перехода от функциональной модели к модели сущностей и связей в IDEF1X.
2. Идентифицировать потенциальные сущности и их атрибуты по тексту предметной области.
3. Отделять самостоятельные сущности от компонентов других сущностей.
4. Классифицировать сущности на независимые, зависимые, характеристические, ассоциативные и общие для категоризации.
5. Различать идентифицирующие и неидентифицирующие связи по положению внешнего ключа в дочерней сущности.
6. Выбирать подходящий первичный ключ — суррогатный или составной — и обосновывать решение.
7. Применять дискриминатор для построения иерархии подтипов.
8. Определять кардинальность связей (P — один или много, N — ноль, один или много) и её влияние на целостность данных.
9. Документировать модель с помощью глоссария и глагольных формулировок отношений.
Показывать лекцию целиком
Краткое изложение
Правила построения модели IDEF1X

От функциональных блоков к сущностям

При переходе от функциональной модели к модели данных действует базовое правило: все стрелки входа, выхода и управления становятся потенциальными сущностями (entities), а функции, связывающие их, — отношениями (relationships) между этими сущностями.

Формирование списка потенциальных сущностей

Анализируя техническое задание или описание предметной области, вы последовательно выписываете все объекты, которые встречаются в тексте. Например, фраза «в офис банка приходят клиенты, обращаются к сотрудникам, может быть открыт счёт» порождает сущности: Офис, Клиент, Сотрудник, Счёт. Список накапливается по мере чтения. Позже связи уточняются глагольными оборотами, проясняющими характер взаимодействия.

Масштаб модели и инструменты

Если общее количество сущностей и связей превышает 25–30, модель IDEF1X считается необозримой для ручного рисования. Возникает потребность в специализированном программном обеспечении, позволяющем зумировать, масштабировать и перемещаться по цифровой модели, а не просто видеть рисунок на бумаге.

Визуализация и документирование

Информационная модель функции должна давать возможность видеть структуру документа и воспроизводить информацию, содержащуюся в порождаемых документах. Большую модель разбивают на логические блоки (HR, бухгалтерия, CRM и т.п.), сохраняя только входные связи между блоками. Каждый элемент модели обязан сопровождаться текстовыми пояснениями в глоссарии или гипертексте, иначе восприятие «с листа» крайне затруднено.

Определение атрибутов

После составления списка сущностей, их группировки и пояснения связей, переходят к раскрытию содержимого каждой сущности — перечню её атрибутов (attributes). Порядок: сначала сущности и связи, затем внутренняя структура.

Пример: модель строительства садового домика

Первоначальный перечень потенциальных сущностей

Рассмотрим упрощённую задачу. Составляется список: Дом, Крыша, Материалы, Проект дома, Стены, Строители, Фундамент, Каменщики, Плотники, Кровельщики, Мастер по отделке. Реальный процесс включает закупки, поставщиков и многое другое, но для иллюстрации ограничимся этим.

Отсев компонентов

Не все элементы являются самостоятельными сущностями. Крыша, фундамент и стены — это компоненты, части дома. В модели они не выделяются как отдельные сущности, а остаются лишь элементами сущности Дом. Самостоятельными признаны: Проект дома, Материал, Строитель (с подтипами) и, собственно, Дом.

Атрибуты сущностей

• Проект дома:
o Номер проекта — суррогатный ключ (surrogate key), искусственный простой первичный ключ (primary key, PK).
o ФИО архитектора, дата создания, стоимость. При необходимости добавляются стиль, этажность и прочее.
• Материал:
o Код материала — простой первичный ключ.
o Название, вид, характеристики.
• Строитель:
o Табельный номер — первичный ключ.
o ФИО, профессия, стаж работы, адрес.

Категоризация строителей

Сущность Строитель разделяется на подтипы по дискриминатору. Дискриминатор (discriminator) — атрибут «Профессия» — направляет запись в одну из дочерних сущностей: Каменщик, Кровельщик, Плотник, Мастер по отделке.
Категория наследует первичный ключ родителя (табельный номер). Собственные атрибуты появляются только там, где они уместны. Например, у мастера по отделке может быть поле «допуск к высотным работам», бессмысленное для каменщика. Такой подход аналогичен примеру «Студенты-бюджетники» и «Студенты-платники»: стипендия — только для бюджетников, размер оплаты в год — только для платников.

Сущность «Дом»: составной ключ и связи

Для сущности Дом первичный ключ образуют два атрибута: Адрес + ФИО хозяина. Это составной первичный ключ (composite primary key). Одного ФИО недостаточно, потому что один человек может владеть несколькими домами. Одного адреса тоже мало — адреса могут повторяться в разных регионах. Вероятность, что владелец приобрёл дома по абсолютно одинаковому адресу в двух регионах, ничтожно мала, поэтому пара «адрес + ФИО хозяина» обеспечивает уникальность.

Внешние ключи (foreign key, FK), ссылающиеся на родительские сущности:
Номер проекта (ссылка на «Проект дома»);
Код материала (ссылка на «Материал»);
Табельный номер (ссылка на «Строитель»).

Все три внешних ключа не входят в первичный ключ «Дом», а остаются в списке вторичных атрибутов. Следовательно, эти связи являются неидентифицирующими (non-identifying relationships). Если бы внешний ключ попадал в состав первичного ключа дочерней сущности, связь была бы идентифицирующей (identifying relationship).

Кардинальность и обязательность

От сущностей Проект дома и Материал к Дом отходит связь с мощностью P (один или много, one or many). Это означает: в дочерней сущности обязательно должна существовать хотя бы одна запись, ссылающаяся на родительскую.

• Дом нельзя построить без проекта — каждый проект обязан быть реализован хотя бы в одном доме.
• Материал заводится в справочник только тогда, когда используется в строительстве, поэтому каждый материал хотя бы раз появляется в таблице «Дом».

Если бы связь имела мощность N (ноль, один или много, zero, one or many), допускалось бы существование неиспользованных проектов или материалов, что противоречит условию задачи.

Обзор ключевых понятий IDEF1X

Изученная нотация IDEF1X оперирует следующими элементами:
Сущности — независимые (нет внешних ключей в первичном ключе) и зависимые (внешний ключ включён в первичный ключ). Среди них выделяются ассоциативные, характеристические, а также общие сущности, выступающие родителями в иерархии категорий.
Атрибуты — первичные ключи (простые или составные), альтернативные ключи, внешние ключи и неключевые (вторичные) атрибуты.
Отношения — идентифицирующие, неидентифицирующие, неспецифические («многие ко многим», many-to-many) и отношения категоризации с дискриминатором.

Краткие итоги

Переход от словесного описания предметной области к строгой модели данных требует дисциплины, но даёт формальный каркас, исключающий двусмысленность. Последовательность действий естественна: сначала фиксируются все потенциально значимые объекты, затем отсеиваются конструктивные элементы, входящие в состав более крупных сущностей. Такой фильтр сразу устраняет избыточность, оставляя только то, что действительно обладает самостоятельной ценностью для информационной системы.

Когда перечень сущностей определён, на первый план выходит детализация: каждая сущность наделяется атрибутами, из которых выбирается или создаётся первичный ключ. Выбор ключа — это всегда компромисс между естественной уникальностью и удобством. Суррогатные ключи просты и стабильны, но не несут смысловой нагрузки; составные естественные ключи, напротив, отражают бизнес-логику, однако усложняют связи. В примере с домом использован составной ключ «адрес + ФИО хозяина» именно потому, что он опирается на реальные свойства объекта, а не на искусственный идентификатор, и гарантирует корректную идентификацию даже при масштабировании на множество регионов.

После проработки атрибутов выполняется расстановка внешних ключей. Здесь критически важно осознать разницу между идентифицирующей и неидентифицирующей связью. Идентифицирующая связь делает дочернюю сущность зависимой от родительской — её первичный ключ без внешнего ключа неполон. Неидентифицирующая связь оставляет дочерней сущности независимость в идентификации, что часто соответствует реальности: дом существует как самостоятельный объект, пусть и ссылается на проект, материал и строителей. Понимание этого выбора напрямую влияет на целостность базы данных и удобство навигации по связям.

Особое место занимает механизм категоризации с дискриминатором. Он позволяет выразить иерархию «общее–частное» без дублирования общих атрибутов и с сохранением специфических свойств подтипов. Этот приём незаменим там, где сущности одной природы имеют разные наборы характеристик: достаточно вспомнить пример со студентами-бюджетниками и платниками. Тонкость заключается в том, что дискриминатор чётко определяет, какая запись в какое подмножество попадёт, исключая неоднозначность. В результате модель остаётся компактной, а прикладная логика легко считывается.

Наконец, кардинальность связей довершает семантическую картину. Указание мощности P (один или много) — это не просто техническая деталь, а жёсткое бизнес-правило: материал не заводится в справочник «про запас», проект не существует абстрактно, он реализован. Если проектировщик осознанно ставит N, он разрешает нулевое участие, что тоже должно быть отражением реальных процессов. В совокупности описанные приёмы дают модель, которая одновременно точно отражает предметную область и служит надёжным фундаментом для реализации базы данных. Навык такого моделирования приходит с практикой, а теоретическая рамка лишь направляет и страхует от типичных ошибок.
Правила построения модели IDEF1X

Базовое правило: все входы, выходы и управления функциональной модели становятся потенциальными сущностями (entities), а функции — отношениями (relationships). Работа начинается с выписывания сущностей прямо из текста предметной области. Встречая в описании объекты, вы последовательно фиксируете их в общем списке.

Если итоговое число сущностей и связей превышает 25–30, ручное черчение становится неэффективным — модель считается необозримой и требует специализированного ПО для масштабирования и навигации. Информационная модель обязана давать возможность просматривать структуру документов, а все элементы сопровождаются текстовыми пояснениями в глоссарии или гипертексте. После перечня сущностей и связей определяются их атрибуты (attributes).

Пример строительства садового домика

Первичный список: Дом, Крыша, Материалы, Проект дома, Стены, Строители, Фундамент, Каменщики, Плотники, Кровельщики, Мастер отделки. Крыша, стены и фундамент — это компоненты дома, а не самостоятельные сущности, поэтому они исключаются. Остаются: Проект дома, Материал, Строитель, Дом.

Атрибуты Проекта дома: Номер проекта (простой суррогатный первичный ключ, primary key, PK), ФИО архитектора, дата создания, стоимость.
Атрибуты Материала: Код материала (PK), название, вид, характеристики.
Атрибуты Строителя: Табельный номер (PK), ФИО, профессия, стаж, адрес.

Категоризация строителей

Сущность Строитель разделяется по дискриминатору (discriminator) «Профессия» на подтипы: Каменщик, Кровельщик, Плотник, Мастер по отделке. Каждый подтип наследует первичный ключ родителя (табельный номер) и может иметь уникальные поля (например, допуск к высотным работам). Это идентифицирующая связь: внешний ключ одновременно является первичным ключом подтипа.

Сущность «Дом» и её связи

Для Дома используется составной первичный ключ (composite primary key): Адрес + ФИО хозяина. Одного ФИО недостаточно из-за возможности владения несколькими домами, одного адреса — из-за повторяемости в разных регионах. Пара гарантирует уникальность.

Внешние ключи (foreign key, FK):
Номер проекта (ссылается на Проект дома),
Код материала (ссылается на Материал),
Табельный номер (ссылается на Строителя).

Все три внешних ключа не входят в первичный ключ «Дом», поэтому связи являются неидентифицирующими (non-identifying). Если бы FK попал в состав PK, связь была бы идентифицирующей (identifying).

Кардинальность и обязательность

От Проекта дома и Материала к Дому проведены связи с мощностью P (один или много, one or many). Это означает: каждый проект обязан быть реализован хотя бы в одном доме; каждый материал, занесённый в справочник, обязательно используется в строительстве. Мощность N (ноль, один или много, zero, one or many) допустила бы неиспользуемые проекты или материалы, что противоречит бизнес-правилу.

Ключевые понятия IDEF1X

Сущности: независимые (PK без FK других сущностей), зависимые (FK входит в PK). Выделяются также ассоциативные, характеристические и общие (родители в иерархии категорий).
Атрибуты: первичные ключи (простые/составные), альтернативные ключи, внешние ключи, неключевые (вторичные) атрибуты.
Отношения: идентифицирующие (FK → PK дочерней сущности), неидентифицирующие (FK в неключевых атрибутах), неспецифические «многие ко многим» (many-to-many), категоризация с дискриминатором.

Выводы

5. Атрибуты определяют после установления сущностей и их отношений, раскрывая внутреннюю структуру каждой сущности.
6. Первичный ключ может быть простым суррогатным или составным естественным — выбор диктуется уникальностью данных.
7. Дискриминатор по атрибуту «профессия» делит сущность-родитель на подтипы, наследующие её первичный ключ и имеющие свои специфические поля.
8. Внешние ключи, не входящие в первичный ключ дочерней сущности, задают неидентифицирующую связь.
9. Идентифицирующая связь требует, чтобы внешний ключ стал частью первичного ключа зависимой сущности.
10. Мощность связи P (один или много) устанавливает обязательность наличия хотя бы одной связанной записи, запрещая «пустые» проекты или материалы.
11. Мощность N (ноль, один или много) допускает отсутствие связи, что должно отражать реальные бизнес-правила.
12. Текстовый глоссарий и глагольные формулировки связей делают модель самодокументированной и доступной для понимания.

Вопросы для самопроверки

1. Как из элементов функциональной модели получают сущности и отношения в IDEF1X?
2. По каким признакам компонент объекта исключается из списка самостоятельных сущностей?
3. Чем независимая сущность отличается от зависимой в терминах первичного и внешнего ключей?
4. Для чего вводится дискриминатор, и как он распределяет записи по подтипам?
5. В чём разница между идентифицирующей и неидентифицирующей связью?
6. Когда возникает необходимость использовать составной первичный ключ вместо суррогатного?
7. Что означает мощность связи «P» (один или много) с точки зрения целостности данных?
8. Почему для сущности «Дом» недостаточно одного адреса в качестве первичного ключа?
9. Какие виды атрибутов выделяются в модели IDEF1X?
10. При каком объёме модели становится обязательным использование программных инструментов?
11. Какую роль выполняют глоссарий и гипертекстовые комментарии в цифровой модели?
12. В чём отличие между суррогатным и естественным ключом?
Вернуться к учебному плану