Добавлен: 28.11.2018

Просмотров: 5430

Скачиваний: 10

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

 

81

Коррелированный

  

подзапрос

  -  

подзапрос

,  

результат

  

ко

-

торого

  

зависит

  

от

  

строки

,  

рассматриваемой

  

главным

  

запро

-

сом

Ниже

  

приведен

  

пример

  

такого

  

подзапроса

        

Запрос

:  

Вывести

   

фамилии

   

работников

,  

чьи

   

почасовые

  

ставки

 

выше

,  

чем

  

ставки

  

их

  

менеджеров

                  
  SELECT  

Фамилия

 

  FROM  

Работник

  

А

 

  WHERE  

А

Недельная

 

зарплата

  > 

                       (SELECT  B.

Недельная

 

зарплата

 

                         FROM   

Работник

  

В

 

                         WHERE  

В

.

 

работника

 = 

А

.

 

менеджера

           
    

Результат

:   

     

Фамилия

 

      

К

.  

Иванов

         

 

Обратите

  

внимание

,  

что

  

поскольку

  «

А

Недельная

  

зарпла

-

та

»  

может

  

сравниваться

  

только

  

с

  

одной

  

величиной

,  

подза

-

прос

  

должен

  

выдавать

  

только

  

одну

  

величину

.  

Эта

  

величина

  

меняется

  

в

  

зависимости

  

от

  

того

,  

какая

  

строка

  

А

  

рассматри

-

вается

.  

Таким

   

образом

,  

подзапрос

   

коррелирует

   

с

   

главным

  

запросом

 

 

 

 

 

 

 

 


background image

 

82

6.  

Сетевая

  

модель

  

данных

 

6.1.  

Исторический

  

контекст

 

Сети

 -  

это

 

способ

  

представления

  

отношений

   

между

  

объ

-

ектами

.  

Они

  

широко

  

применяются

  

в

  

математике

,  

исследова

-

ниях

  

операции

,  

физике

  

и

  

других

  

областях

  

знаний

.  

Сети

   

обычно

   

представлены

   

математической

   

структурой

,  

которая

  

называется

  

направленным

  

графом

.   

Граф

  

состоит

  

из

   

точек

   

или

   

узлов

,  

которые

   

соединены

   

стрелками

   

или

  

ребрами

.  

В

  

сетевой

  

модели

  

узлы

  

можно

  

представлять

  

как

  

типы

   

записей

   

данных

,  

а

   

ребра

 – 

как

 

отношения

   

один

-

к

-

одному

   

или

   

один

-

ко

-

многим

.   

Таким

   

образом

,  

сетевая

   

мо

-

дель

   

данных

   

представляет

   

данные

   

сетевыми

   

структурами

  

типов

  

записей

,  

которые

  

связаны

  

отношениями

  

один

-

к

-

одному

  

или

  

один

-

ко

-

многим

.   

В

  1971 

году

  

был

  

опубликован

  

официальный

  

стандарт

  

се

-

тевых

   

баз

   

данных

,  

который

   

получил

   

название

  CODASYL.  

Появление

   

стандарта

   

увеличило

   

популярность

   

сетевой

   

мо

-

дели

,  

и

   

многие

   

компании

   

создали

   

свои

   

версии

   

сетевой

  

СУБД

.   

Хотя

  

сетевая

  

модель

  

данных

  

в

  

будущем

  

может

  

все

  

больше

  

уступать

  

место

  

на

  

рынке

  

СУБД

  

реляционной

  

модели

  

данных

,  

сегодня

  

она

  

эффективно

  

служит

  

во

  

многих

  

инфор

-

мационных

  

системах

6.2.  

Основные

  

понятия

 

и

  

определения

 

В

  

сетевой

  

модели

  

существуют

  

два

  

основных

  

понятия

:  

ти

-

пы

  

записей

  

и

  

наборы

.  

Типы

  

записей

 -  

это

  

совокупность

  

ло

-

гически

   

связанных

   

записей

.  

Например

,  

тип

   

записи

   

клиент

  

может

   

включать

   

такие

   

элементы

   

данных

,  

как

   

ИД

-

Клиент

,  

Имя

,  

Адрес

,  

Сумма

-

Счета

,  

Дата

-

Последнего

-

Платежа

.  

Все

  

типы

   

записей

    -   

это

   

заданные

   

имена

,  

такие

   

как

   

КЛИЕНТ

,  

СЧЕТ

,  

ТОРГОВЫЙ

  

АГЕНТ

  

и

  

т

.

д

Наборы

  -  

это

   

отношения

   

один

-

ко

-

многим

    (

или

   

один

-

к

-

одному

)  

между

  

двумя

  

типами

  

записей

.  

Например

,  

один

  

на

-

бор

   

выражает

   

отношения

   

один

-

ко

-

многим

   

между

   

записями

  

клиентов

  

и

  

подлежащих

  

оплате

  

ими

  

счетов

.  

В

 

любом

  

сете

-

вом

  

наборе

  

один

  

тип

  

записей

  

является

  

владельцем

,  

а

  

ос

-

тальные

  - 

членами

.  

В

   

данном

   

примере

   

тип

   

записи

   

клиент

  

является

  

владельцем

,  

а

  

тип

  

записи

  

счета

 – 

членом

.  

Отноше

-

ние

  

один

-

ко

-

многим

  

допускает

  

возможность

,  

что

  

с

  

записью

  

кли

-


background image

 

83

ент

   

может

   

быть

   

связано

   

ноль

,  

одна

   

или

   

несколько

   

записей

  

счетов

.  

Конечно

,  

бывают

   

ситуации

,  

когда

   

отношения

 

   

строго

  

один

-

к

-

одному

,  

как

,  

например

,  

между

  

грузовиком

  

и

  

его

  

водите

-

лем

,  

но

  

они

  

обрабатываются

  

таким

  

же

  

образом

Имя

  

набора

  - 

это

  

метка

,  

которая

  

присвоена

  

стрелке

.   

Все

  

эти

  

понятия

  

про

-

иллюстрированы

  

примером

,  

приведенным

  

на

  

рис

.6.1. 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

а

диаграмма

 

 

КЛИЕНТ 

 

 

 

 

ТОРГОВЫЙ АГЕНТ 

 

Смит 

Джоунс  

 

 

Дарвин   

Бин

 

 

 
 
 
Заказ 1 

 

Заказ 2   

 

Заказ 3 

 
 
 
Ручки 

  Карандаши  

Бумага   

Конверты 

 

 

б

Вхождения

 

 

Рис

.6.1. 

Пример

  

сетевой

  

структуры

  

данных

 

КЛИЕНТ 

ТОРГОВЫЙ-

АГЕНТ 

ЗАКАЗ 

СТРОКА-ЭЛЕМЕНТ 

МНОЖЕСТВО 
КЛИЕНТ

-

ЗАКАЗ

 

ВЛАДЕЛЕЦ 

ВЛАДЕЛЕЦ 

МНОЖЕСТВО  
 ТА-ЗАКАЗ 

ЧЛЕН 

ВЛАДЕЛЕЦ 

ЧЛЕН 

МНОЖЕСТВО 
ЭЛЕМЕНТ-ЗАКАЗА 


background image

 

84

На

  

рис

.6.1  

мы

  

видим

  

некоторые

  

обозначения

.  

Во

-

первых

,  

набор

  

обозначается

  

стрелками

  

между

  

типами

  

записей

,  

при

-

чем

   

стрелка

   

указывает

   

в

   

сторону

   

типа

   

записи

   

члена

.  

Во

-

вторых

,  

каждый

   

набор

   

состоит

   

из

   

типа

   

записи

   

владелец

,  

типа

  

записи

  

член

  

и

  

имени

  

набора

В

-

третьих

,  

структура

  

дан

-

ных

  

состоит

  

из

  

этих

  

простых

  

наборов

  

отношений

.  

На

  

рис

.6.1 

представлены

  

три

  

набора

:  

набор

  

КЛИЕНТ

-

ЗАКАЗ

  

с

  

владель

-

цем

  

КЛИЕНТ

  

и

  

членом

  

ЗАКАЗ

,  

набор

  

ТА

-

ЗАКАЗ

  

с

  

владель

-

цем

  

ТОРГОВЫЙ

-

АГЕНТ

  

и

  

членом

  

ЗАКАЗ

  

и

  

набор

  

ЭЛЕМЕНТ

-

ЗАКАЗА

  

с

  

владельцем

  

ЗАКАЗ

  

и

  

членом

  

СТРОКА

-

ЭЛЕМЕНТ

.   

Рис

.6.1  

является

   

примером

   

отличия

   

сетевой

   

модели

   

от

  

иерархической

.  

Тип

   

записи

   

ЗАКАЗ

   

является

   

членом

   

для

  

двух

   

наборов

:  

КЛИЕНТ

-

ЗАКАЗ

   

и

   

ЗАКАЗ

.  

В

   

иерархической

  

модели

  

данных

  

никакой

  

тип

  

записи

  

не

  

может

  

быть

  

членом

  

двух

  

разных

  

наборов

,  

но

  

в

  

сетевой

  

модели

  

это

  

возможно

.  

6.3.  

Преимущества

  

и

  

недостатки

  

сетевых

  

моделей

 

Достоинством

  

сетевых

  

моделей

  

является

  

отсутствие

  

дуб

-

лирования

   

данных

   

в

   

различных

   

элементах

   

модели

.  

Кроме

  

того

,  

технология

   

работы

   

с

   

сетевыми

   

моделями

   

является

  

удобной

  

для

  

пользователя

,  

так

  

как

  

доступ

  

к

  

данным

  

практи

-

чески

  

не

  

имеет

  

ограничений

  

и

  

возможен

  

непосредственно

  

к

  

объекту

   

любого

   

уровня

.  

Недостатки

   

сетевой

   

модели

,  

в

   

ос

-

новном

,  

связаны

   

со

   

слабыми

   

возможностями

   

адаптации

   

к

  

изменяющимся

   

требованиям

   

и

   

выполнения

   

разовых

   

запро

-

сов

Кроме

   

того

,  

для

   

таких

   

моделей

   

характерна

   

сложность

  

реализации

  

СУБД

.   

Упражнения

 

и

 

задачи

 

Базу

 

данных

спроектированную

 

в

 

упражнении

 

раздела

 3, 

преобразуйте

 

в

 

виде

 

сетевой

 

модели

 
 
 
 
 
 


background image

 

85

7.  

Иерархическая

  

модель

  

данных

 

7.1.  

Основные

  

понятия

  

и

  

определения

 

Иерархическая

  

модель

  

данных

  

является

  

частным

  

случаем

  

сетевой

   

модели

   

данных

.  

Как

   

уже

   

описывалось

   

в

   

предыду

-

щей

  

главе

,  

сеть

  - 

это

  

направленный

  

граф

,  

который

  

состоит

  

из

  

точек

,  

соединенных

  

стрелками

.  

Точки

  - 

это

  

типы

  

записей

,  

а

   

стрелки

 – 

это

   

отношение

   

один

-

к

-

одному

   

или

   

один

 – 

ко

-

многим

.  

Стрелка

   

в

   

сети

   

имеет

   

по

   

точке

   

с

   

каждого

   

конца

.  

Точка

  

в

  «

хвосте

»  

стрелки

  

в

  

иерархической

  

модели

  

называ

-

ется

   

предком

,  

а

   

точка

   

на

   

острие

   

стрелки

   

называется

   

по

-

томком

.  

Разница

  

между

  

сетевой

  

и

  

иерархической

  

моделями

  

состоит

  

в

  

том

,  

что

  

в

   

сетевой

  

модели

  

потомок

  

может

  

при

-

надлежать

  

нескольким

  

предкам

,  

а

  

в

  

иерархической

  

модели

  - 

только

  

одному

.  

Дерево

  

данных

  - 

это

  

иерархия

  

сегментов

,  

удовлетворяю

-

щих

  

следующим

  

правилам

1. 

Существует

  

единственный

  

сегмент

  

верхнего

  

уровня

,  

ко

-

торый

  

назывантся

  

корнем

.     

Корневой

  

сегмент

  

не

  

входит

  

в

  

качестве

  

потомка

  

ни

  

в

  

один

  

тип

  

ОПП

2. 

За

   

исключением

   

корневого

   

сегмента

,  

каждый

   

сегмент

  

входит

  

в

  

качестве

  

потомка

  

ровно

  

в

  

один

  

тип

  

ОПП

3. 

Сегмент

   

может

   

быть

   

в

   

качестве

   

предка

   

в

   

нескольких

  

типах

  

ОПП

  (

например

,  

СЛУЖАЩИЙ

  

на

  

рис

.6.1). 

4. 

Сегмент

-

предок

   

обладает

   

произвольным

   

количеством

  

потомков

,  

но

   

каждый

   

сегмент

-

потомок

   

обладает

   

только

   

од

-

ним

  

сегментом

-

предком

.  

Это

  

означает

,  

что

  

отношения

  

между

  

предком

  

и

  

потомком

  

в

  

дереве

  

один

-

ко

-

многим

.  

5. 

Сегмент

,  

у

   

которого

   

нет

   

потомка

,  

называется

   

листо

-

вым

  

сегментом

. 

6. 

Для

  

любого

  

типа

  

сегмента

  

А

  

существует

  

единственный

  

путь

  

в

  

дереве

  

от

  

корня

  

до

  

А

.  

Записи

  

этого

  

пути

  

называют

-

ся

  

предшественниками

. 

А

 -   

зависимый

  

сегмент

   

всех

  

сег

-

ментов

  

пути

,  

включая

  

корень

7. 

Сегмент

  

А

  

сам

  

может

  

быть

  

корнем

  

поддерева

 

Вхождения

   

одного

   

и

   

того

   

же

   

типа

   

сегмента

,  

который

  

имеет

  

одного

  

и

  

того

     

же

  

предка

,  

называются

  

близнецами

.   

В

   

иерархической

   

модели

   

данных

   

существует

   

такой

   

тер

-

мин

,  

как

   

сбалансированное

   

дерево

    -   

это

   

такое

 

дерево

,  

у