- •Глава 1 Внешние модели данных
- •1.1. Общие положения
- •1.2. Иерархическая модель
- •1.3. Целостность иерархической модели
- •Уникальность
- •Обязательность и множественность
- •Кортежи
- •Виртуальные атрибуты
- •Правила активности
- •1.4. Построение иерархических моделей
- •Ориентация модели
- •Выбор ключевых атрибутов
- •3 Посвященному пользователю этот набор цифр — номер зачетной книжки — тоже может сказать кое-что; например, первые две цифры — о годе поступления студента.
- •1.5. Модель «гиперкуб данных»
1.4. Построение иерархических моделей
Модель «сложная таблица» является достаточно гибкой и позволяет несколькими способами отражать многие особенности моделируемых процессов и явлений. Обсудим вопросы, возникающие при практическом построении моделей этого типа, такие как ориентация модели, выбор ключевых атрибутов, выбор между необязательными и множественными атрибутами, обобщение атрибутов.
Ориентация модели
Вопрос о ориентации — первый вопрос, на который должен ответить разработчик исходной модели: на что ориентирован, что отражает каждый экземпляр сущности модели. Одни и те же данные могут быть по-разному представлены в модели в зависимости от ответа на этот вопрос.
Ориентация на факты существования объектов предметной области характерна для всех рассмотренных выше примеров моделей. Моделируемые предметные области содержат множества объектов того или иного класса: студентов, сотрудников, патентов и т. д. В соответствии с этим каждый экземпляр сущности модели соответствует некоторому объекту: студенту, сотруднику, патенту и т. д. Взаимодействие объектов с другими объектами моделируется на нижестоящем уровне иерархии с помощью многозначных агрегатов, отражающих предметы, сдаваемые студентами, подразделения, в которых работают сотрудники, соавторы патентов и т. д.
Ориентация на факты взаимодействия объектов предметной области — другой подход к построению модели. В этом случае каждый экземпляр сущности модели отражает пару (или больше) объектов предметной области и соответствует их взаимодействию между собой.
При таком подходе на одном уровне иерархии могут располагаться атрибуты взаимодействующих объектов, а также атрибуты самого взаимодействия, относящиеся к паре (или больше) объектов целиком.
Пример. На рис. 1.14 иллюстрируются варианты ориентации для моделей, отражающих успеваемость различных студентов по различным предметам. Два варианта модели, ориентированные на факты существования (студентов и предметов соответственно) и содержащие одни и те же данные, приведены на рис. 1.14, а и б. Взаимодействие объектов (студентов с предметами и, наоборот, предметов со студентами) отражено с помощью вложенных многозначных агрегатов). На рис. 1.14, в те же данные представлены в манере, ориентированной на факты взаимодействия. Каждый экземпляр сущности отражает сдачу некоторым студентом некоторого предмета. Здесь нет многозначных агрегатов, атрибуты сгруппированы в три однозначных агрегата, соответствующие студенту, предмету, а также результату их взаимодействия.
Пример. На рис. 1.15 приведена модель, отражающая факты работы отдельных сотрудников на отдельных должностях в отдельных подразделениях в течение некоторого времени. Модель отражает взаимодействие трех классов объектов: «Сотрудник», «Подразделение» и «Должность». Сотрудники в процессе работы могут переходить из одного подразделения в другое и там работать на разных должностях. Атрибут «стаж» (проработанное время) не может относиться ни к одному из этих объектов в отдельности, поскольку:
конкретный сотрудник в течение трудовой деятельности мог работать на нескольких должностях в нескольких подразделениях,
в конкретном подразделении работало несколько сотрудников на соответствующих должностях,
на конкретной должности (скажем, инженера), вообще говоря, могли работать несколько сотрудников в нескольких подразделениях. Аналогичным образом эти атрибуты не могут относиться ни к одной паре этих объектов, поскольку:
конкретный сотрудник в конкретном подразделении мог последовательно работать на нескольких должностях,
в конкретном подразделении на конкретной должности работают, вообще говоря, несколько сотрудников,
конкретный сотрудник на конкретной должности мог, вообще говоря, последовательно работать в нескольких подразделениях. Следовательно, атрибут «стаж» — это атрибут тройки объектов: стаж работы конкретного сотрудника на конкретной должности в конкретном подразделении.
Использование той или иной ориентации — это не вопрос выбора разработчика, скажем, из соображений удобства, а вопрос выяснения реальных потребностей пользователя. Разработчик должен выяснить, какая ориентация необходима пользователю при выполнении данной автоматизированной функции, и именно ее использовать в модели.