Сайт Информационных Технологий

2.2.2. Системы управления базами данных с древовидной структурой (например, M)

Структура этих СУБД базируется на деревьях и на ориентированных графах в большей степени, чем на таблицах. В этих БД с древовидной структурой данные представлены в виде набора узлов. Каждый узел дерева может хранить данные и может иметь некоторое количество (ориентированных) связей с узлами-потомками. Обычно не требуется, чтобы узлы-потомки и/или узлы, имеющие один узел-предок, были одного типа. Обычно допускается, что узел содержит открытый список связей с многочисленными узлами того же типа, разрешая прямое представление связей "многие-ко-многим".

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

В М воплощена концепция БД с древовидной структурой (дочерние узлы являются компонентами родительского узла) и разрешает внешние связи (единичные или в массиве) с любыми другими узлами. Пример, который мы использовали для реляционной базы данных, может быть реализован на М при помощи структуры, представленной на рис. 2..3 (предполагаем, что каждый служащий - сотрудник только одного отдела).

Рис. 2.3. Древовидная структура представления данных в М/БД

На этой диаграмме - родительским узлом является Отдел. Каждый отдел имеет единственного потомка Руководитель и массив потомков Служащие. Отметим, что Руководитель - это просто Служащий, который определяется узлом Руководитель, указывающего на этого особенного служащего при помощи Указателя на Служащего. Для этого указателя не требуется обратного направления - Руководителя Служащего можно определить, посмотрев на узел Руководитель, порожденный родительским для Служащего узлом (Отдел). Отметим, что структура данных в значительной степени отражена в структуре БД, нам не потребовалось создавать и отдельно описывать связи.

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

Более подходящая структура показана на рис.2.4.

Рис. 2.4. Древовидная структура со сложными взаимосвязями между узлами

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

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

Структуры, определенные выше, базируются на языке М, включающем элементы управления базой данных. М - это имеющий ANSI стандарт язык программирования, употребляемый уже более 20 лет, который подвергся целому ряду существенных преобразований (последний раз - в 1995 году). М используется в основном в здравоохранении и банковском деле, кроме того - в ряде вертикальных приложений, таких как выпуск "желтых страниц".

Большинство сегодняшних М систем можно свободно связывать с реляционными БД при помощи SQL и ODBC. Однако для того, чтобы использовать этот мост, администратор БД должен создать отображение структуры М данных в реляционную модель, так как SQL и ODBC предполагают именно эту модель.


Site of Information Technologies
Designed by  inftech@webservis.ru.