ВУЗ: Томский государственный университет систем управления и радиоэлектроники
Категория: Учебное пособие
Дисциплина: Базы данных
Добавлен: 28.11.2018
Просмотров: 5430
Скачиваний: 10
81
Коррелированный
подзапрос
-
подзапрос
,
результат
ко
-
торого
зависит
от
строки
,
рассматриваемой
главным
запро
-
сом
.
Ниже
приведен
пример
такого
подзапроса
.
Запрос
:
Вывести
фамилии
работников
,
чьи
почасовые
ставки
выше
,
чем
ставки
их
менеджеров
.
SELECT
Фамилия
FROM
Работник
А
WHERE
А
.
Недельная
зарплата
>
(SELECT B.
Недельная
зарплата
FROM
Работник
В
WHERE
В
.
№
работника
=
А
.
№
менеджера
)
Результат
:
Фамилия
К
.
Иванов
Обратите
внимание
,
что
поскольку
«
А
.
Недельная
зарпла
-
та
»
может
сравниваться
только
с
одной
величиной
,
подза
-
прос
должен
выдавать
только
одну
величину
.
Эта
величина
меняется
в
зависимости
от
того
,
какая
строка
А
рассматри
-
вается
.
Таким
образом
,
подзапрос
коррелирует
с
главным
запросом
.
82
6.
Сетевая
модель
данных
6.1.
Исторический
контекст
Сети
-
это
способ
представления
отношений
между
объ
-
ектами
.
Они
широко
применяются
в
математике
,
исследова
-
ниях
операции
,
физике
и
других
областях
знаний
.
Сети
обычно
представлены
математической
структурой
,
которая
называется
направленным
графом
.
Граф
состоит
из
точек
или
узлов
,
которые
соединены
стрелками
или
ребрами
.
В
сетевой
модели
узлы
можно
представлять
как
типы
записей
данных
,
а
ребра
–
как
отношения
один
-
к
-
одному
или
один
-
ко
-
многим
.
Таким
образом
,
сетевая
мо
-
дель
данных
представляет
данные
сетевыми
структурами
типов
записей
,
которые
связаны
отношениями
один
-
к
-
одному
или
один
-
ко
-
многим
.
В
1971
году
был
опубликован
официальный
стандарт
се
-
тевых
баз
данных
,
который
получил
название
CODASYL.
Появление
стандарта
увеличило
популярность
сетевой
мо
-
дели
,
и
многие
компании
создали
свои
версии
сетевой
СУБД
.
Хотя
сетевая
модель
данных
в
будущем
может
все
больше
уступать
место
на
рынке
СУБД
реляционной
модели
данных
,
сегодня
она
эффективно
служит
во
многих
инфор
-
мационных
системах
.
6.2.
Основные
понятия
и
определения
В
сетевой
модели
существуют
два
основных
понятия
:
ти
-
пы
записей
и
наборы
.
Типы
записей
-
это
совокупность
ло
-
гически
связанных
записей
.
Например
,
тип
записи
клиент
может
включать
такие
элементы
данных
,
как
ИД
-
Клиент
,
Имя
,
Адрес
,
Сумма
-
Счета
,
Дата
-
Последнего
-
Платежа
.
Все
типы
записей
-
это
заданные
имена
,
такие
как
КЛИЕНТ
,
СЧЕТ
,
ТОРГОВЫЙ
АГЕНТ
и
т
.
д
.
Наборы
-
это
отношения
один
-
ко
-
многим
(
или
один
-
к
-
одному
)
между
двумя
типами
записей
.
Например
,
один
на
-
бор
выражает
отношения
один
-
ко
-
многим
между
записями
клиентов
и
подлежащих
оплате
ими
счетов
.
В
любом
сете
-
вом
наборе
один
тип
записей
является
владельцем
,
а
ос
-
тальные
-
членами
.
В
данном
примере
тип
записи
клиент
является
владельцем
,
а
тип
записи
счета
–
членом
.
Отноше
-
ние
один
-
ко
-
многим
допускает
возможность
,
что
с
записью
кли
-
83
ент
может
быть
связано
ноль
,
одна
или
несколько
записей
счетов
.
Конечно
,
бывают
ситуации
,
когда
отношения
−
строго
один
-
к
-
одному
,
как
,
например
,
между
грузовиком
и
его
водите
-
лем
,
но
они
обрабатываются
таким
же
образом
.
Имя
набора
-
это
метка
,
которая
присвоена
стрелке
.
Все
эти
понятия
про
-
иллюстрированы
примером
,
приведенным
на
рис
.6.1.
а
)
диаграмма
КЛИЕНТ
ТОРГОВЫЙ АГЕНТ
Смит
Джоунс
Дарвин
Бин
Заказ 1
Заказ 2
Заказ 3
Ручки
Карандаши
Бумага
Конверты
б
)
Вхождения
Рис
.6.1.
Пример
сетевой
структуры
данных
КЛИЕНТ
ТОРГОВЫЙ-
АГЕНТ
ЗАКАЗ
СТРОКА-ЭЛЕМЕНТ
МНОЖЕСТВО
КЛИЕНТ
-
ЗАКАЗ
ВЛАДЕЛЕЦ
ВЛАДЕЛЕЦ
МНОЖЕСТВО
ТА-ЗАКАЗ
ЧЛЕН
ВЛАДЕЛЕЦ
ЧЛЕН
МНОЖЕСТВО
ЭЛЕМЕНТ-ЗАКАЗА
84
На
рис
.6.1
мы
видим
некоторые
обозначения
.
Во
-
первых
,
набор
обозначается
стрелками
между
типами
записей
,
при
-
чем
стрелка
указывает
в
сторону
типа
записи
члена
.
Во
-
вторых
,
каждый
набор
состоит
из
типа
записи
владелец
,
типа
записи
член
и
имени
набора
.
В
-
третьих
,
структура
дан
-
ных
состоит
из
этих
простых
наборов
отношений
.
На
рис
.6.1
представлены
три
набора
:
набор
КЛИЕНТ
-
ЗАКАЗ
с
владель
-
цем
КЛИЕНТ
и
членом
ЗАКАЗ
,
набор
ТА
-
ЗАКАЗ
с
владель
-
цем
ТОРГОВЫЙ
-
АГЕНТ
и
членом
ЗАКАЗ
и
набор
ЭЛЕМЕНТ
-
ЗАКАЗА
с
владельцем
ЗАКАЗ
и
членом
СТРОКА
-
ЭЛЕМЕНТ
.
Рис
.6.1
является
примером
отличия
сетевой
модели
от
иерархической
.
Тип
записи
ЗАКАЗ
является
членом
для
двух
наборов
:
КЛИЕНТ
-
ЗАКАЗ
и
ЗАКАЗ
.
В
иерархической
модели
данных
никакой
тип
записи
не
может
быть
членом
двух
разных
наборов
,
но
в
сетевой
модели
это
возможно
.
6.3.
Преимущества
и
недостатки
сетевых
моделей
Достоинством
сетевых
моделей
является
отсутствие
дуб
-
лирования
данных
в
различных
элементах
модели
.
Кроме
того
,
технология
работы
с
сетевыми
моделями
является
удобной
для
пользователя
,
так
как
доступ
к
данным
практи
-
чески
не
имеет
ограничений
и
возможен
непосредственно
к
объекту
любого
уровня
.
Недостатки
сетевой
модели
,
в
ос
-
новном
,
связаны
со
слабыми
возможностями
адаптации
к
изменяющимся
требованиям
и
выполнения
разовых
запро
-
сов
.
Кроме
того
,
для
таких
моделей
характерна
сложность
реализации
СУБД
.
Упражнения
и
задачи
Базу
данных
,
спроектированную
в
упражнении
раздела
3,
преобразуйте
в
виде
сетевой
модели
.
85
7.
Иерархическая
модель
данных
7.1.
Основные
понятия
и
определения
Иерархическая
модель
данных
является
частным
случаем
сетевой
модели
данных
.
Как
уже
описывалось
в
предыду
-
щей
главе
,
сеть
-
это
направленный
граф
,
который
состоит
из
точек
,
соединенных
стрелками
.
Точки
-
это
типы
записей
,
а
стрелки
–
это
отношение
один
-
к
-
одному
или
один
–
ко
-
многим
.
Стрелка
в
сети
имеет
по
точке
с
каждого
конца
.
Точка
в
«
хвосте
»
стрелки
в
иерархической
модели
называ
-
ется
предком
,
а
точка
на
острие
стрелки
называется
по
-
томком
.
Разница
между
сетевой
и
иерархической
моделями
состоит
в
том
,
что
в
сетевой
модели
потомок
может
при
-
надлежать
нескольким
предкам
,
а
в
иерархической
модели
-
только
одному
.
Дерево
данных
-
это
иерархия
сегментов
,
удовлетворяю
-
щих
следующим
правилам
:
1.
Существует
единственный
сегмент
верхнего
уровня
,
ко
-
торый
назывантся
корнем
.
Корневой
сегмент
не
входит
в
качестве
потомка
ни
в
один
тип
ОПП
.
2.
За
исключением
корневого
сегмента
,
каждый
сегмент
входит
в
качестве
потомка
ровно
в
один
тип
ОПП
.
3.
Сегмент
может
быть
в
качестве
предка
в
нескольких
типах
ОПП
(
например
,
СЛУЖАЩИЙ
на
рис
.6.1).
4.
Сегмент
-
предок
обладает
произвольным
количеством
потомков
,
но
каждый
сегмент
-
потомок
обладает
только
од
-
ним
сегментом
-
предком
.
Это
означает
,
что
отношения
между
предком
и
потомком
в
дереве
один
-
ко
-
многим
.
5.
Сегмент
,
у
которого
нет
потомка
,
называется
листо
-
вым
сегментом
.
6.
Для
любого
типа
сегмента
А
существует
единственный
путь
в
дереве
от
корня
до
А
.
Записи
этого
пути
называют
-
ся
предшественниками
.
А
-
зависимый
сегмент
всех
сег
-
ментов
пути
,
включая
корень
.
7.
Сегмент
А
сам
может
быть
корнем
поддерева
.
Вхождения
одного
и
того
же
типа
сегмента
,
который
имеет
одного
и
того
же
предка
,
называются
близнецами
.
В
иерархической
модели
данных
существует
такой
тер
-
мин
,
как
сбалансированное
дерево
-
это
такое
дерево
,
у