С.Д. Кузнецов - Основы баз данных (1121716), страница 59
Текст из файла (страница 59)
Если в разделе реОН указана только одна таблица, то она же и является результатом выполнения этого раздела. Как говорилось в лекции 3, в реляционной алгебре для корректного выполнения операции взятия расширенного декартова произведения отношений в общем случае требуется применение операции переименования атрибутов. Соответствуюшие возможности переименования столбцов таблиц, указанных в списке раэдела ЕЕОМ, поддерживаются и в Я( П.. Альтернативный способ именования столбцов результируюшей таблицы т основывается на использовании квалифицированных имен столбцов. Идея этого подхода (более раннего в истории В()г.) заключается в том, что с любой таблицей, ссылка на которую содержится в списке раздела реом, можно связать некоторое имя-псевдоним (в стандарте оно называется согге1аг(оп паглееее).
Тогда если с такой таблицей й связан псевдоним 2, то в пределах оператора выборки можно ссылаться на любой столбец а таблицы л по квалифицированному имени г.а. Мы обсудим это подробнее в следуюшем подразделе. Пока же будем считать, что имена всех столбцов таблицы Т определены и различны. На втором шаге выполняется раздел никее. Условное выражение (сопс)111опа1 ехргеэв(оп) этого раздела применяется к каждой строке таблицы т, и результатом является таблица т1, содержащая те и только те строки таблицы т, для которых результатом вычисления условного выражения является грие.
(Заголовки таблиц т и т1 совпадают.) Если раздел хнкек в операторе'**' выборки отсутствует, то это трактуется как наличие раздела никее оие, т. е. т1 содержит те и только те строки, которые * Не следует понимать эту схему таким образом, что запросы к ЗОь-ориентированной базе данных действительно должны выполняться именно таким образом. Более того, ни одна реализация Я;6. не придерживается в точности этой схеме. Но как бы реально ни выполнялся оператор выборки, результат должен быть таким же, как если бы он получался при точном следовании описываемой схеме выполнения. " л, в, и с не обязаны являться базовыми юаблииами. См. следующий подраздел.
"' Причины использования в стандарте этого термина будут более понятны после ознакомления в следующей лекции с механизмом каррелируююкт алаэсенямх яадзалросаа. "'* Заметим, что эта форма раздела ннепе в языке БОБ не лопускается, поскольку после ключевого слова ННЕПЕ доюкно следовать булевское выражение, а Ггое булевским выражением не является. 274 Лекция 13 Характеристика оператора ЕЕЬЕСТ и ссылки на таблицы аздела РВОМ содержатся в таблице т. Обратите внимание на разницу в трактовке логических выражений в операторах выборки и в табличных ограничениях целостности. Логическое выражение раздела мнене (и раздела нлчтно) оператора выборки разрешает выборку строки в том и только в том случае, когда результатом вычисления логического выражения на данной строке является ггпе (значения гайе и и)спагсп не являются разрешаюшими).
Логическое выражение табличного ограничения целостности запрешает наличие строки в таблице в том и только в том случае, когда результатом вычисления логического выражения на данной строке является уа(лг (значения ггие и и)спогсп не являются запрешаюшими). Если в операторе выборки присутствует раздел аноар ну, то он выполняется на третьем шаге. Каждый элемент списка имен столбцов (со1пшп паше сошша11эг), указываемого в этом разделе, должен быть одним из имен столбцов таблицы т1. В результате выполнения раздела СВООР Е У Образуется сгруппированная таблица т2, в которой строки таблицы т1 расставлены в минимальное число групп, таких, что во всех строках одной группы значения столбцов, указанных в списке имен столбцов раздела своп' вт (сгполбцов группировгси), одинаковы.* Заметим, что сгруппированные таблицы не могут являться окончательным результатом оператора выборки.
Они существуют только на концептуальном уровне на стадии выполнения запроса, содержашего раздел ОВООР ну. Если в операторе выборки присутствует раздел ндтгпж, то он выполняется на следуюшем шаге. Условное выражение этого раздела применяется к каждой группе строк таблицы т2, и результатом является сгруппированная таблица т1, содержашая те и только те группы строк таблицы т2, для которых результатом вычисления условного выражения является ауге.
Условное выражение раздела НЛР1МС строится по синтаксическим правилам, обшим для всех условных выражений, но обладает той спецификой, что применяется к группам строк, а не к отдельным строкам. Поэтому предикаты, из которых строится это условное выражение, должны быть предикатами на группу в целом. В них могут использоваться имена столбцов группировки (ипвариапгпы группы) и так называемые агрегатные функции (Оонмт, еом, мтн, мйх, луо) от других столбцов. мы обсудим агрегатные функции более подробно в следуюших лекциях.
При наличии в запросе раздела нлтггно, которому не предшествует раздел СНООР Ву, таблица т1 рассматривается как сгруппированная таблица, состояшая из одной группы строк, без столбцов группирования. В этом случае логическое выражение раздела нлугмо может состоять только из предикатов с агрегатными функциями, а результат вычисления этого раздела тэ либо совпадает с таблицей т1, либо является пустым. ' Если говорить более точно, то а одной группе асс строки, составленные из значений стслб- цоа группировки, являются дубликатами. 275 Основы баэ данных ку с Если в операторе выборки присутствует раздел снопу ву, но отсутствует раздел нилин, то это трактуется как наличие раздела НГОГтиа Лтге*, т.
е. тз содержит те и только те группы строк, которые содержатся в таблице т2. После выполнения раздела хнкпд (если в запросе отсутствуют разде- ЛЫ СВОП Ву И Нйтутип, СЛуЧай (а)) ИЛИ ЯВНО ИЛИ НЕЯВНО ЗадаННОГО раЗдЕЛа НКЛНО (случай (Ь)) выполняется раздел дК дст. При выполнении этого раздела на основе таблицы т2 в случае (а) или на основе сгруппированной таблицы тз в случае (ь) строится таблица т4, содержашая столько строк, сколько строк или групп строк содержится в таблицах -.2 или тЗ соответственно. Число столбцов в таблице т4 зависит от числа элементов в списке элементов выборки (еегеос ьбещ оопепаг(нп) и от вида элементов.
Рассмотрим, каким образом формируются значения столбцов в таблице т4. Элемент списка выборки может задаваться одним из двух способов: цехеос збещ ::= ца1це ехргеннзоп ( 1 АЯ 1 со1цпаз папе 1 согге1аг(оп папе . ] * Сначала обсудим первый вариант. В этом случае казкдый элемент списка элементов выборки соответствует столбцу таблицы г4. Столбцу может быть явным образом приписано имя (когда и зачем могут использоваться имена таблицы г4, мы обсудим позже). Порядок формирования значения этого столбца для выделенных выше случаев (а) и (Ь) различается, и мы рассмотрим подобные случаи по отдельности.
В случае (а) выражение, содержашееся в элементе выборки, может содержать литеральные константы и вызовы функций со значениями соответствующих типов (в том числе ниладические). Кроме того, в выражении могут использоваться имена столбцов таблицы таль. Выражение вычисляется для каждой строки таблицы т), и именам столбцов соответствуют значения этих столбцов в данной строке таблицы г2.
В случае (Ь), как и в случае (а), выражение, содержашееся в элементе выборки, может содержать литеральные константы и вызовы функций. Но, в отличие от случая (а), в выражение могут входить непосредственно имена только тех столбцов таблицы тЗ, которые входили в список столбцов группировки раздела ОПОгЗр Ву оператора выборки. (Если сгруппированная таблица тз быпа образована за счет наличия раздела нйутнс без * Заметим, что эта форма раздела нлцтнз а языке ЗОь не допускается, поскольку после ключевого слова Няутыс лолжно слелоаать булеаское выражение, а ггое булеаским аыражением не является.
"" Обратите внимание, что а яырюкении элемента выборки яе обязательно должно солержаться хотя бы одно имя стодбца. Допускается наличие чисто контантного выражения, значение которого будет поаторяться а даннои столбце всех строк таблицы ТИ Кроме того, заметим, что а соотаетстяии с определением чаще ехргеаа кап элемент списка выборки может быть запросом, аозаращающим таблицу из одной строки с одним столбцом. 276 Лекция 1З Характеристика оператора ЯЕСЕОТ и ссылки на таблицы раздела ЕПОМ присутствия раздела овсов ву, то в выражении элемента выборки вообще нельзя непосредственно использовать имена столбцов таблицы ТЗ.1 Имена других столбцов таблицы ТЗ могут использоваться только в конст- руКцняХ ВЫЗОВа аГрЕГатНЫХ фуНКцИй СОПИТ, ЯОМ, МТМ, МАХ, Азус. ВЫражЕ- ние вычисляется для каждой группы строк таблицы ТЗ.
Именам столбцов, входящих в выражение непосредственно, сопоставляются значения этих столбцов, которые соответствуют данной группе строк таблицы тз. Во втором варианте спецификация элемента списка выборки вида [ к. 1* является сокращенной формой записи списка 2.
я„к.а„..., к. а„, где аз, а„..., а,, представляет собой полный список имен столбцов таблицы, псевдоним которой к.* Следует сделать три замечания. Во-первых, для именованной таблицы, входящей в список раздела рвом только один раз, можно использовать имя таблицы вместо псевдонима. Во-вторых, во втором варианте спецификации элемента списка выборки можно опустить псевдоним только в том случае, если в разделе РвОм указана только одна таблица. В-третьих, в случае ([з1 второй вариант спецификации элемента выборки допустим только тогда, когда все столбцы таблицы с псевдонимом к входят в список столбцов группировки раздела ОЮРР ВУ.
Итак, мы получили таблицу т4. Если в спецификации раздела Яквкст отсутствует ключевое слово Р1ят1мст, или присутствует ключевое слово АРР, либо отсутствуют и АРР, и Р1 ят1мст, то т4 является результатом выполнения раздела ЯКРКСТ. В противном случае на завершающей стадии выполнения раздела ЯКРКСТ в таблице т4 удаляются строки-дубликаты.
Если в операторе выборки не содержится раздел оюкв ву, то таблица т4 является результирующей таблицей запроса. Иначе на завершающей стадии выполнения запроса производится сортировка строк таблицы т4 в соответствии со списком элементов сортировки (огс[ег 1гещ солпзя11яя) раздела оюкв ву. В стандарте Я.Н;.1999 элемент списка элементов сортировки имеет следующую синтаксическую форму: огг1ет 1геза ::=. ча1це ехргеяякоц [ со11аге с1ацяе АЯС [ РКЯГ Выполнение раздела оюкк ву производится следующим образом.** Выбирается первый элемент списка сортировки, и строки таблицы т4 расставляются в порядке возрастания (если в элементе присутствует спецификаши Аяо; при отсутствии спецификации Аяс уРКяС предполагается нали- ' Заметим, что любой элемент г. а, этого неявно заданного списка может быть явно включен в список элементов выборки.