Операции выборки в отношениях, имеющих древовидную структуру 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Операции выборки в отношениях, имеющих древовидную структуру



RS
Рассмотрим отношение RS («структура подчинения»), показанное на рис.8.1. Это отношение имеет два атрибута: EMP и MGR. Оба они полу-

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 не может быть начальником служащего, находящегося на уровне ЕХ.



Рис.2. Отношение RS, представленное в виде дерева.

Можно убедиться, что таб­лица на рис.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. 6 L)

МАХ представляет собой библиотечную функцию. Смысл за­проса заключается в следующем: «Получить номера тех служащих, чей отно­сительный уровень под Е8 имеет наибольшее значение». Результатом является единственный номер служащего Е 32 (3L).

Выборка с терминальных уровней. Выдать номера тех служащих, которые подчиняются служащему Е8 и сами не имеют подчиненных.

RS MQR+ ЕМР
    Е8 P. EX (LAST.L)

Мы ищем служащих на концевых вершинах дерева под Е8. Поскольку в об­щем случае эти служащие будут на различных относительных уровнях, мы не можем записать какую-либо целую константу или целую переменную (кон­станта означала бы некоторый фиксированный уровень, а переменная озна­чала бы все уровни). Поэтому язык QBE обеспечивает специальную библио­течную функцию LAST (последний).

Выборка уровня. На каком относительном уровне служащий Е20 находится ниже служащего Е1?


RS MGR EMP
  E1 P.E20(7 L)

Результат:

EMP
E20(3L)

Операции запоминания

Простое обновление. Поменять цвет всех красных деталей на желтый.

Детали №детали название цвет вес город
    2     красный        
UPDATE. 2     желтый        

Для того чтобы обновить строку или множество строк, пользователь (в об­щем случае) записывает выражение, представляющее старые данные, и вы­ражение, представляющее новые данные. Слово UPDATE указывает, какоеиздвух выражений соответствует новым данным. Следовательно, в примере, при­веденном выше, первая строка указывает, что любая строка таблицы, скажем, относящаяся к детали 2 и содержащая значение цвета 'красный', должна быть изменена и иметь значение цвета 'желтый’. За­метим, что и «старые» и «новые» строки должны содержать запись в позиции первичного ключа. Значения первичного ключа не могут быть изменены.

Некоторые обновления могут быть заданы одним выражением (строкой). Например: изменить цвет детали 2 на желтый независимо от того, какой цвет она имела. Пользователю необходимо записать лишь «но­вую» строку из двух, рассмотренных выше (и без подчеркивания 2).

Обновление нескольких таблиц. Предположим, Что таблица Р вклю­чает добавочный столбец QOH (количество на руках). Поставщик S1 теперь поставляет деталей Р1 на 10 больше, чем прежде; добавить 10 к «количеству на руках» для Р1 и к количеству Р1 поставляемых поставщиком S1.

Поставщики №поставщика название цвет вес Город   QOH    
    Р1                 N
UPDATE. Р1                 N+ 10

 

Поставки №поставщика №детали количество
    S1 PI Q
UPDATE S1 PI Q+ 10

Включение (INSERTION). Занести данные о детали Р7 (наимено­вание болт, цвет серый, вес 2, город Лондон) в таблицу Р.

Р №поставщика название цвет вес город
INSERT. Р7 болт серый   Лондон

8.4.4. Включение (INSERTION). Таблица W содержит множество строк, относящихся к деталям (в том же самом формате, что и строки таблицы Р). Скопировать все строки для красных деталей в таблицу Р.

W название цвет вес город
  РХ красный РГ

 


Р название цвет вес город
INSERT. РХ РН красный РВ РГ

Все записи пользователя в строке INSERT, кроме РХ могут при желании быть опущены.

Удаление (DELETION). Удалить поставщика S1.

s фамилия статус город
DELETE. S1            

Безусловное удаление. Удалить все детали.

Р фамилия цвет вес город
DELETE. РХ                

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

Библиотечные функции

Простая выборка с использованием функции. Получить значение об­щего количества поставщиков.

Поставщики фамилия статус город
    Р.COUNT.ALL. SX            

8.5.2. Простая выборка с использованием функции. Получить значение общего количества поставщиков, поставляющих детали в настоящеевремя.

поставки №поставщика №детали количество
    Р.COUNT.U.ALL. SX    

«U.» означает уникальный (ALL автоматически не исключает избыточные по­вторяющиеся данные).

Выборка по условию с использованием функции. Получить значение общего количества поставщиков детали Р2.

Поставки №поставщиков №детали количество
    P.COUNT.ALL. SX Р2    

Выборка по условию с использованием функции. Получить значение общего количества поставок детали Р2.

Поставки №поставщика №детали количество
        Р2 P.SUM.ALL. Q

Выборка с группированием. Для каждой поставляемой детали полу­чить номер детали и значение количества поставщиков этой детали.

Поставки №поставщика №детали количество
    Р.COUNT.ALL. SX Р. РХ    

Заметьте, что явного задания оператора группирования не требуется. Опера­тор ALL автоматически обеспечивает желаемый эффект, так как в этом за­просе, например, выражение ALL. SX означает множество всех номеров по­ставщиков, соответствующее РХ.

Выборка по условию с использованием блока условия и функции. Получить номера всех деталей, которые поставляются более чем одним по­ставщиком.

Поставщики №поставщика №детали количество
  ALL. SX P.PX  

 

Блок условия  
COUNT.ALL. SX >1

Заключение

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

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

 

Основы баз данных............................................................................................................................ 1

Введение............................................................................................................................................. 1

ИПС................................................................................................................................................ 1

БЗ..................................................................................................................................................... 2

История БнД....................................................................................................................................... 2

Проблемы БД:..................................................................................................................................... 2

Состав БнД......................................................................................................................................... 5

Процесс проектирования базы данных........................................................................................... 6

ER-модель (модель Чена).................................................................................................................. 8

Основные понятия:....................................................................................................................... 9

Виды связи................................................................................................................................... 10

Рекурсивные связи...................................................................................................................... 15

Реляционная модель данных.......................................................................................................... 18

12 правил Кодда,......................................................................................................................... 21

которым должна удовлетворять реляционная база данных................................................... 21

Операции над данными.............................................................................................................. 22

Реляционная алгебра....................................................................................................................... 22

Свойства реляционных операций............................................................................................. 27

Понятие функциональной зависимости (Ф.З)......................................................................... 31

Запись запросов на языке реляционной алгебры.................................................................... 33

Проектирование реляционной базы данных........................................................................... 34

Методы проектирования............................................................................................................ 36

Язык доступа к данным,.................................................................................................................. 38

основанный на исчислении с переменными кортежами............................................................ 38

Технологии клиент-сервер.............................................................................................................. 47

1 вариант - файловый сервер..................................................................................................... 47

2 вариант – удаленный доступ.................................................................................................. 48

3 вариант – сервер Базы Данных............................................................................................... 49

4 вариант – сервер приложений................................................................................................ 50

Внутренняя модель данных............................................................................................................ 51

ЯЗЫК QUERY BY EXAMPLE (QBE)........................................................................................... 54

 

 



Поделиться:


Последнее изменение этой страницы: 2016-09-20; просмотров: 221; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.21.34.0 (0.05 с.)