- •Основы баз данных. Введение.
- •БзХранятся не только данные, но и знания о применении этих данных. Реализуются они в виде процедур и алгоритмов. Выборки обрабатывают данные.
- •История БнД.
- •Проблемы бд:
- •Состав БнД.
- •Процесс проектирования базы данных.
- •Er-модель (модель Чена).
- •Основные понятия:
- •Виды связи
- •Рекурсивные связи
- •Представление связей более высокого порядка (не бинарных).
- •Избыточное дублирование.
- •Реляционная модель данных.
- •12 Правил Кодда, которым должна удовлетворять реляционная база данных.
- •Операции над данными.
- •Реляционная алгебра.
- •Свойства реляционных операций.
- •Понятие функциональной зависимости (ф.З).
- •Запись запросов на языке реляционной алгебры.
- •Проектирование реляционной базы данных.
- •Методы проектирования.
- •7 Правил Джексона.
- •Язык доступа к данным, основанный на исчислении с переменными кортежами.
- •Атрибуты, используемые для описания таблиц.
- •Обработка ссылочной целостности.
- •Операторы манипулирования данными.
- •Как задается условие?
- •Запросы, которые реализуются на основе соединения.
- •Подзапрос.
- •Использование квантора exists для поиска пересечения и разности.
- •Квантор общности моделирующий операцию деления.
- •Соответствия между операциями реляционной алгебры и sql.
- •Технологии клиент-сервер.
- •1 Вариант - файловый сервер.
- •2 Вариант – удаленный доступ.
- •3 Вариант – сервер Базы Данных.
- •4 Вариант – сервер приложений.
- •Внутренняя модель данных.
- •B-дерево.
- •Язык query by example (qbe)
- •Операции выборки в отношениях, имеющих древовидную структуру
- •Операции запоминания
- •Библиотечные функции
Операции выборки в отношениях, имеющих древовидную структуру
Р
RS
-
MGR
EMP
Е1
Е1
Е1
Е6
Е8
Е8
Е15
Е15
Е24
Е6
Е7
Е8
Е18
Е15
Е16
Е20
Е24
Е32
Рис.1. Отношение RS («структура подчинения»).
чаются из домена «номера служащих». Смысл любого кортежа RS состоит в том, что указанный cлужащий с номером ЕМР работает под руководством указанного начальника с номером MGR.
Мы полагаем, что структура подчинения, представленная отношением RS, всегда удовлетворяет следующим ограничениям:
1. Никакой служащий не является своим собственным начальником.
2. Никакой служащий не имеет более одного непосредственного начальника.
3. Если, например, ЕХ является непосредственным начальником EY, то EY не может быть начальником служащего, находящегося на уровне ЕХ.
Можно убедиться, что таблица на рис.1 удовлетворяет этим ограничениям. Поэтому мы можем представить это отношение как имеющее древовидную структуру (рис.2).
Будем называть отношение, имеющее два атрибута, определенные на общем домене и удовлетворяющие ограничениям, аналогичным перечисленным выше, отношением с древовидной структурой. В языке QBE пользователь может формулировать некоторые запросы к отношению с древовидной структурой, которые не могут быть выражены с помощью других менее мощных языков, таких, как, например, реляционная алгебра.
Рассмотрим некоторые примеры.
Выборка с уровня на один уровень ниже заданного.
Получить номера служащих, подчиненных служащему E8 на первом уровне.
RS |
MQR |
ЕМР |
|
Е8 |
Р.ЕХ |
Под выражением «на первом уровне» мы подразумеваем, что E8 является непосредственным начальником интересующих нас служащих. Ответом на запрос являются служащие E15 и E16. Этот пример очевиден и не иллюстрирует ничего нового.
Выборка с уровня на два уровня ниже заданного. Получить номера служащих, подчиненных служащему E8 на втором уровне.
RS |
MGR |
ЕМР |
|
E8 |
EY |
|
EY |
Р.ЕХ |
Опять решение очевидно, но заметим, что мы должны ввести связь EY, а также должны записать эту связь в таблицу дважды. В общем случае, если мы хотим спуститься по дереву вниз на п уровней, нам нужно записать каждую из n— 1 связей дважды (весьма утомительный процесс!).
Поэтому язык QBE обеспечивает удобное сокращение, которое иллюстрируется альтернативной записью рассмотренного выше запроса.
RS |
MGR |
ЕМР |
|
Е8 |
P.EX(2L) |
«(2L)» обозначает «второй уровень». Вообще, здесь может стоять любое целое, предшествующее литере L и вместе с ней заключенное в скобки. Всякий раз, когда используется указатель уровня, QBE помещает номера относительных уровней в таблицу результатов. Например:
ЕМР |
E20(2L) E24(2L; |
Выборка с уровня на два уровня выше заданного. Получить номер начальника (MGR), находящегося двумя уровнями выше служащего Е20.
RS |
MGR |
ЕМР+ |
|
P.MX(2L) |
Е20 |
Здесь запись уровня появляется в столбце MGR. В общем случае направление поиска (вверх или вниз по дереву) указывается столбцом, в котором появляется запись уровня. В некоторых ситуациях это правило, однако, могло бы привести к неоднозначности. Чтобы избежать этого, в QBE вводится ограничение, согласно которому не более чем две записи уровня могут появляться в любой строке при формировании запроса, включающего уровни.
Выборка со всех уровней ниже заданного. Получить номера служащих, подчиненных служащему Е8 на любом уровне.
RS |
MGR |
ЕМР |
|
Е8 |
P.EX(6L) |
Результат
-
ЕМР
Е15(1L)
E20(2L)
E24(2L)
E32(3L)
E16(1L)
Это пример запроса, который не может быть выражен в реляционной алгебре или языках, эквивалентных ей по мощности. Обратите внимание на подчеркивание в записи уровня.
Выборка с самого нижнего уровня. Получить номера служащих, подчиняющихся служащему Е8 на самом нижнем уровне.
RS |
MQR |
ЕМР |
|
Е8 |
P.EX(MAX.6L) |
МАХ представляет собой библиотечную функцию. Смысл запроса заключается в следующем: «Получить номера тех служащих, чей относительный уровень под Е8 имеет наибольшее значение». Результатом является единственный номер служащего Е 32 (3L).
Выборка с терминальных уровней. Выдать номера тех служащих, которые подчиняются служащему Е8 и сами не имеют подчиненных.
RS |
MQR+ |
ЕМР |
|
Е8 |
P.EX(LAST.L) |
Мы ищем служащих на концевых вершинах дерева под Е8. Поскольку в общем случае эти служащие будут на различных относительных уровнях, мы не можем записать какую-либо целую константу или целую переменную (константа означала бы некоторый фиксированный уровень, а переменная означала бы все уровни). Поэтому язык QBE обеспечивает специальную библиотечную функцию LAST (последний).
Выборка уровня.На каком относительном уровне служащий Е20 находится ниже служащего Е1?
-
RS
MGR
EMP
E1
P.E20(7L)
Результат:
-
EMP
E20(3L)