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