Алгоритм получения структуры иерархической БД
1. Для каждой функциональной зависимости вида А -» В создается отношение Si(A,B). Каждый блок взаимно-однозначных соответствий также порождает отношение с ключом, равным старшему по объему понятия атрибуту.
В нашем примере будут созданы следующие отношения (ключи помечены знаком #):
S1(HИИ #, Директор, Адрес),
82(Отдел #, НИИ, Ксотр),
БЗ(Тема #, Датанач, Датакон, Приор),
Б4(ФИО #, Отдел),
S5(TeMa #, Работа #, ФИО #, Прод),
S6(TeMa #, Заказ #, Обфин).
2. Разделить отношения на группы по признаку: два отношения находятся в общей группе, если их ключи функционально определяют хотя бы один общий атрибут.
Для отношений SI - S6 получаем две группы:
• SI, S2, S4, S5 (все ключи функционально определяют атрибут НИИ);
• S3, S6, S5 (все ключи функционально определяют атрибут ТЕМА).
Далее шаги 3,4,5 выполняются раздельно для каждой группы. Количество групп определяет количество иерархических БД.
3. У всех пар отношений группы проверяется условие для ключей Kj -» Ki. Если оно соблюдается, то из соответствующих отношений создается веерное отношение Wij(Si.Sj).
4. Найти в группе цепи веерных отношений и сцепить их в дерево. Элемент цепи образуется по условию Wij - Wjk.
В нашем примере получим:
группа 1: цепь W12(S1,S2), W24(S2,S4), W45(S4,S5) образует дерево;
группа 2: цепей нет, но W35(S3,S5) и W36(S3,S6) образуют дерево.
5. Атрибуты, оставшиеся вне цепей на шаге 4, добавить в структуру тех отношений, где они будут неключевыми, либо в структуру отношений, соответствующих висячим вершинам дерева.
|
|
6. Если группы, полученные на шаге 2, содержат общие отношения, то решить вопрос о целесообразности установления логических связей между иерархическими БД.
7. Сократить список атрибутов в сегментах за счет удаления атрибутов зависимого отношения, общих в паре "основной -зависимый".
и выборки.
МИНИМАЛЬНОЕ МНОЖЕСТВО ВАРИАНТОВ ВЫБОРКИ СООТВЕТСТВУЕТ ТРЕМ ОПЕРАЦИЯМ.
1. GU - получить уникальную запись по известным значениям первичного ключа на каждом уровне дерева иерархической базы данных.
2. GN - получить следующую запись на том уровне дерева, где находится текущая запись после выполнения оператора GU.
3. GNP - получить следующую запись на расположенном непосредственно ниже уровня дерева относительно позиции, где находится текущая запись после выполнения оператора GU или GN.
ПРИМЕР:
для запроса - получить информацию о преподавателе с кодом 1103 кафедры 11 факультета 01 - потребуется оператор
GU Факультет (Факультет="01")
Кафедра (Кафедра=и11")
Преподаватель (Преподаватель="1103")
print Преподаватель
В этом примере названия отношений совпадают с названиями соответствующих первичных ключей.
Запрос - получить список всех студентов группы 102 - реализуется следующей последовательностью операторов .
|
|
GU Факультет (Факультет="01")
Группа (Группа="Ю2")
Студент
М1: GN Студент
print Студент
goto Ml
Поскольку в операторе GU не указано условие выборки в отношении Студент, текущей записью станет первая запись этого отношения, и далее циклическое повторение оператора GN обеспечит требуемое извлечение всех записей о студентах группы 102. Выход из цикла произойдет в результате получения кода возврата "конец отношения".
Сравнение моделей данных
При сравнении моделей данных очень трудно отделить факторы, характеризующие принципиальные особенности модели, от факторов, связанных с реализацией этих моделей данных средствами конкретных СУБД.
Рассматривая преимущества и недостатки известных моделей данных, следует отметить ряд несомненных достоинств реляционного подхода:
• Простота. В реляционной модели всего одна информационная конструкция, которая формализует табличное представление данных, привычное для пользователей-экономистов.
• Теоретическое обоснование. Наличие теоретически обоснованных методов нормализации отношений и проверки ацикличности структуры позволяет получать базы данных с заданными характеристиками.
• Независимость данных. Когда необходимо изменить структуру реляционной БД, это, как правило, приводит к минимальным изменениям в прикладных программах.
Дата добавления: 2018-05-12; просмотров: 243; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!