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