русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Иерархический и сетевой подходы


Дата добавления: 2015-08-06; просмотров: 867; Нарушение авторских прав


 

В реляционном исчислении и алгебре полностью отсутствуют указания на то, каким образом производить поиск необходимых данных. Опе­рирование отношениями (таблицами) предполагает просмотр всех записей. Когда БД велика, а этот случай типичен для САПР, то невозможно производить полный просмотр всех ее записей. Поэтому необходимо предва­рительное упорядочивание и объединение в группы за­писей по признакам поиска.

Если реляционное исчисление позволяет описать вид выходного документа, а реляционная алгебра — после­довательность операций над отношениями, то для орга­низации поиска нужных записей используются понятия ключа и связи.

Ключ— уникальное имя записи, в качестве которого может выступать как элемент какого-либо атрибута в записи — простой ключ, так и совокупность элементов нескольких атрибутов — составной ключ. С помощью ключа производится идентификация каждой конкретной записи, а также упорядочение записей в файле.


Напри­мер, в качестве ключа БД (см. табл. 2.2, 2.3) могут вы­ступать код типа микросхемы в отношении ОМС и код узла в отношении ОУЗ. Упорядочение по ключу может быть либо прямым, либо выполнено с помощью хеш-функции.

Прямое упорядочение предполагает лексикографиче­ское расположение записей: записи могут быть записаны либо в порядке увеличения значения ключа (при этом можно рассматривать простой ключ как некоторое чис­ло), либо в алфавитном порядке. Для второго случая ключи записей отношения ОМС (см. табл. 2.2) будут записаны в следующем порядке: 155ИР1, 155ЛАЗ, 155ЛА6, 155ТВ1, 155ТМ2.

Хеш-функция производит пересчет ключа в адрес за­писи на файле. Эта операция выполняется СУБД вся­кий раз при поиске нужной записи по ключу. Связи по­зволяют осуществить группирование записей в множе­ства, а также указывать взаимоотношения между эти­ми множествами. На практике связь реализуется, как правило, в виде указателя.



Так, если необходимо указать связь между записью 155ТМ2 в отношении ОМС с записью Сч50 отношения ОУЗ, то в состав записи 155ТМ2 необходимо включить указатель на запись Сч50. В случае присутствия и об­ратной связи запись Сч50 должна также содержать ука­затель на запись 155ТМ2. Однотипные записи группиру­ются в сегменты (типы записей).

Графически при описании базы данных разным ти­пам связей соответствуют обозначения в виде различных стрелок: «→» — связь с одной записью; «→→» — связь с несколькими записями. Взаимные связи имеют следую­щие названия: «←→» — «один к одному», «←→→» — «один ко многим», «←←→→» — «многие ко многим». На рис. 2.2 записи изображены в виде прямоугольников, а сегменты представлены кружками. Например, обозначе­ние, приведенное на рис. 2.2, в, следует понимать так: каждая запись сегмента А связана с некоторой группой записей сегмента В, а каждая запись из сегмента В свя­зана лишь с одной записью сегмента А.

С помощью указанных обозначений строится граф логической схемы, вершины которого — сегменты, а ду­ги— обозначения типов связей между сегментами. На рис. 2.3 представлен пример логической схемы некоторой БД.


Рис. 2.2. Типы и обозначения связей:

а — «один — к одному»; б, в — «один — ко многим» ; г — «многие — ко мно­гим»

 

Рис 2.3. Пример логической схемы базы данных
Иерархический подход. Иерархическая БД имеет граф логической схемы в виде дерева, а тип связей соот­ветствует рис. 2.2, б. Пример логической схемы иерархи­ческой БД приведен на рис. 2.4. В иерархической БД свя­зи направлены только от верхних сегментов к нижним, обратные указатели отсутствуют. Это объясняется прин­ципиальным свойством иерархического представления данных: каждая запись приобретает смысл лишь тогда, когда она рассматривается в своем контексте, т. е. любая запись не может существовать без предшествующей ей записи по иерархии. При поиске в иерархической БД не­обходимо указывать значение ключа на каждом уровне иерархии. Так, для доступа к записи из множества G (рис. 2.4) должны быть по­следовательно указаны клю­чи записей из множеств А, С и G.

Реляционная БД всегда может быть преобразована в иерархическую. Однако конкретный вид логической схемы зависит от типа запросов. В табл. 2.2...2.4 приведен пример фрагмента реляционной


 

БД, содержащего запись о характеристиках микросхем и узлов. Дополним базу данных, представленную в табл. 2.2...2.4, также записями о характеристиках устройств, состоящих из совокупности узлов, образовав сегмент АК. Тогда для запросов типа «Найти узлы для заданных устройств», «найти микросхемы для заданных узлов» можно постро­ить иерархическую БД (рис. 2.5). Поэкземплярная реа­лизация связей первых двух сегментов приведена на рис. 2.6. Каждая запись сегмента АК связана с группой записей сегмента ОУЗ. В данной конкретной реализа­ции запись из АК ссылается на первую в группе запись из ОУЗ, сами же записи сегмента ОУЗ объединены с по­мощью отдельных указателей в цепные списки. Очевид­но, что поиск в такой БД легко осуществляется по со­ставному ключу. Например, составной ключ АК20. РЗ позволяет найти все сведения об узле РЗ, входящем в состав устройства АК20.

При организации связей между уровнями ОУЗ — ОМС возникает проблема избыточности, заключающая­ся в необходимости повторения записей микросхем. Так, микросхема 155ЛАЗ должна быть указана во всех за­писях сегмента ОМС, связанных с записями ДШ10, Сч46, РЗ и СМ. 15 сегмента ОСУ. В конкретной реализа­ции возможно избежать многократного повторения опи­сания микросхемы 155ЛАЗ введением указателя на запись 155ЛАЗ, хранящуюся отдельно. Однако значение указателя на запись 155ЛАЗ должно быть размножено. Это не вызывает существенных затрат памяти, однако усложняет решение проблемы целостности базы данных.



Рис. 2.4. Пример логической схе­мы иерархической базы данных

 

 

Рис. 2.5. Логи­ческая схема для заданного типа запроса


 

Трудности в использовании иерархической базы дан­ных возникают при изменении типа запроса. Так, если в рассматриваемом примере БД появится запрос «Найти узлы, включающие заданную микросхему», то пропадают преимущества предыдущего иерархического упорядоче­ния. Действительно, для выполнения этого запроса необ­ходимо просмотреть все записи узлов и все связанные с ними записи микросхем. Для реализации такого запроса было бы целесообразно переупорядочить БД и построить новую иерархию: от записей о микросхемах к записям об узлах,

Рис. 2.6. Схема реализации связей АК—ОУЗ


 

Рис. 2.7. Пример набора (а) и экземпляров набора (б):

А, В-сегменты; а1, а2 - записи сегмента А; b1, b2, …, b7 - записи сегмен­та В; F — имя набора

 

Сетевой подход. Необходимость в организации раз­личного упорядочения записей в БД с целью удовлетво­рения разных типов запросов привела к разработке сете­вых баз данных. В сетевой модели данных в принципе разрешены любые группирования записей и организа­ция произвольных связей между ними. Однако на прак­тике целесообразно введение некоторых ограничений. Рассмотрим представление сетевых моделей данных в соответствии с концепцией КОДАСИЛ.

Набор — основная конструкция сетевых моделей, представляющая собой поименное двухуровневое дерево. С помощью двухуровневых деревьев могут быть построе­ны многоуровневые деревья и большинство сетевых структур. Если рассматривать логическую схему, то на­бор может интерпретироваться как имя связи между двумя сегментами записей типа «один ко многим». Эк­земпляр набора — конкретная реализация такой связи. На рис. 2.7 приведен пример набора и его двух экземпляров.


Рис. 2.8. Допустимые варианты по­строения наборов

Рис. 2.9. Представление от ношения «многие — ко многим»



Каждый экземпляр набора содержит одного владельца и нескольких членов набора. Например, на рис. 2.7 владельцем 1-го экземпляра набора является запись а1, а чле­нами набора — записи b1, ..., b3.

Рис. 2.10. Пример сетевой логиче­ской схемы: УПР — сегмент записей об уникальных проектных решениях; ТПР — сегмент записей о типовых проектных решени­ях; МС—сегмент записей о микросхе­мах; УЗ — сегмент записей об узлах; МСУЗ — сегмент связи между запися­ми сегментов МС и УЗ; УЗТПР — сег­мент связи между записями сегментов УЗ и ТПР; СУПР, ВМС. СУЗ, ВУЗ. С'ТПР — имена соответствующих набо­ров

Допустимо, чтобы за­писи одного сегмента бы­ли владельцами несколь­ких наборов, и, наоборот, записи некоторого набора могут быть членами раз­личных наборов. На рис. 2.8 показаны соответству­ющие конструкции логи­ческой схемы.

В сетевых СУБД не разрешены связи в логической схеме типа «многие — ко многим». Однако с помощью вышеуказанных свойств набора 'можно описать такую связь введением дополнительного сегмента записей, за­дающих взаимоотношение между исходными сегментами, и определить на них два набора так, как это показано на рис. 2.9. Сегмент С содержит записи в форме адресных таблиц (аналогично отношению ОСУ). Записи сегмента С входят в различные наборы для сегментов А и В. Если необходимо найти записи в В, связанные с данной запи­сью из А, то с помощью набора F1 находят указатели на записи в сегменте С, а затем по набору F2 находят иско­мые записи в В. Если же требуется выполнить обратный поиск из В в А, то необходимо воспользоваться сначала набором F2, а затем набором F1.

Пример сетевой логической схемы приведен на рис. 2.10. Из него видно, что поиск необходимых записей мож­но производить начиная с сегментов УПР, МС, УЗ, ТПР.

 



<== предыдущая лекция | следующая лекция ==>
Результат | Инвертированные базы данных


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.844 сек.