С.Д. Кузнецов - Основы баз данных (1121716), страница 72
Текст из файла (страница 72)
Фактически это описание напрямую позаимствовано из стандарта ЯОЕ:1999 с некоторыми незначительными упрощениями. Затем мы представим ряд иллюстрирующих примеров. Формальные определения Пусть требуется выполнить некоторую операцию соединения над таблицами яаые1 и яаые2. Тогда: ° Обозначим через С р результат выполнения запроса яеьест * ЕЕОМ саЫе1, СаЫе2а ° Если задается операция соСК (или ндтоеле готя) без явного указания типа соединения ( о1п Суре), то по умолчанию имеется в виду 1ННЕЕ ,тоти(илинА"ч?ЯАО Яннее Яо1н), ° Если в спецификации соединения (ч о(п ярес11(сап(оп) указано ключевое слово он, то все ссылки на столбцы, всгречаюшиеся в условном выражении (сопс?1с(опа1 ехргеяя(оп), должны указывать на столбцы таблиц яаЫ е1 и га?з1 е2 или на столбцы таблиц внешнего запроса.
Если в этом условном выражении присутствует вызов агрегатной функции, то соединенная таблица может фигурировать только в подзапросах, используемых в разделах идч но или Яег ес внешнего запроса, и ссылка на столбец в вызове функции должна указывать на столбец таблицы внешнего запроса. ° Для прямых соединений (сеОЯЯ ЯОЯн) и всех других видов соединения, включаюших раздел он, заголовок результата операции совпадает с заголовком таблицы СИ ° Если в спецификации вида соединения присутствуют ключевые слова нклжАЬ или ОЯ1НО, то заголовок результата операции определяется сле- дуюшим образом: ° если в спецификации вИда соединения присутствует ключевое слово ХАТ()гчАз, то будем называть соответствующими столбцами соединения (соггеяропг?(пц то(п со1плпз) все столбцы таблиц ' Интересно, что для этого запроса возможна альтернативная формулировка с исподьзованием операциислезя поти: яя яст * улои гашег слезя зстн гашек Можетвозникнуть естественный вопрос: зачем вводить специальную конструкцию для декартова произведения? По мнению автора, зта конструкция была введена, главным образом, для повышения уровня обшности языка ЯОЦ Кроме того, использование явного ключевого слова свозя яогн является подтверждением того, что пользователь действительно желает получить декартово произведение, а не опустил по ошибке раздел ьаяля.
339 Курс Основы баз данных «аЫе1 и «аЫ е2, которые имеют в заголовках этих таблиц одинаковые имена. Если в спецификации вида соединения присутствует ключевое словО ОЯТНО, то будем называть соответствующими столбцами соединения (сс«генропгт(пд доул со1плзп) все столбцы таблиц «аЫе1 и «аЫе2, имена которых входят в список имен столбцов раздела ОЯ1на (эти столбцы должны быть одноименными в заголовках обеих таблиц). В обоих случаях типы данных каждой пары соответствующих столбцов должны быть совместимыми; ° булем называть списком выборки соответствующих столбцов соединения (ве1ес« 1ьв« о« со««европ«11пд ]суп со1пюпн — ЯьСС) список элементов вида СОАЬЕЯСЕ («аЫе1.
с, «аЫе2. с) ГгЯ с', где с является именем соответствующего столбца соединения. Элементы располагаются в том порядке, в котором они появляются в заголовке таблицы «аЫе1. Обозначим через ЯЕТ1 (Яьт2) список имен столбцов таблицы «аЫе1 («аЫн2), которые не являются соответствую- шими столбцами соединения. Имена располагаются в том же порядке, в котором они появляются в заголовке соответствующей таблицы; ° заголовок результата совпадает с заголовком результата запроса ЯЕьЕСТ ЯьСС, ЯЬТ1, ЯЬТ2 РЕОМ «аЫе1, «аЫе2; ° Набор строк результата (множество или мультимножество) определяется по следующим правилам.
Обозначим через т следующие наборы строк: ° если видом соединения является Он10н 001н, то т — пусто; ° если видом соединения является СЕОЯЯ 001Н, то Т включает все строки, входящие в СР; ° если в спецификацию вида соединения входит раздел он, то т включает все строки сР, для которых результатом вычисления условного выражения является иие; ° если в спецификацию вида соединения входят разделы НЛТОЕЛЕ или ОЯТНО, и список ЯЬСС не является пустым, то Т включает все строки СР„для которых значения соответствующих столбцов соединения совпадают;*' ° если в спецификацию вида соединения входят разделы НЛтОЕЛ.
или Оя1н6, и список яьсс является пустым, то т включает все строки сР. ° Обозначим через Р1 (Рд) набор (множество или мультимножество) всех строк таблицы «аЫ е1 («аЫ е2), каждая из которых участвует в образовании некой строки т. ' для удобства читателей напомним, что по определению выражение ссльнзсв гчь, эквивалентно следующемувыраженнюспереключателем: слзк ннкн щ тз нот нпьь тлен чь кьзе 72 ено. "' Совпадаот в строгом смысле, те. значение столбца ганзене совпадает ео значением столбца гаще2, с тогда и только тогда, когда значение операции сравнения тащет.
с = саще2, с является вме. Лекция 15 Г ппировка и условия раздела НАЧ!МЦ, порождаемые и соединенные таблицы ° Обозначим через и (Гт2) набор (множество или мультимножество) всех строк таблицы саь1 е1 (саь1е2), ни одна из которых не участвует в образовании какой-либо строки т. ° Обозначим через х1 набор (множество или мультимножество) всех строк, образуемых из строк набора И путем добавления справа подстроки из неопределенных значений, содержащей столько неопределенных значений, сколько столбцов содержит таблица са1т1е2. Обозначим через х2 набор (множество или мультимножество) всех строк, образуемых из строк набора 112 путем добавления слева подстроки из неопределенных значений, содержащей столько неопределенных значений, сколько столбцов солержит таблица саЫе1.
° Для соединений вида сВОЯЯ готы и 1нмеВ зотм пусть Б обозначает тот же набор строк, что и т. ° Для соединений вида ьеРТ ОптеВ го1М пусть Б обозначает набор строк, являющийся результатом вырвзкения запросов БЕЗВЕСТ * РВОМ Т ОМ1ОМ АЬЬ БЕЗВЕСТ * РВОМ Х1; ° Для соединений вида В1ОНТ ООТЕВ асти пусть Б обозначает набор строк, являющийся результатом выражения запросов БЕЗВЕСТ * РВОМ Т ОМТОМ А1 Ь БЕЗВЕСТ * РВОМ Х2; ° Для соединений вида РОЬЕ ООТЕВ до1М пусть Я обозначает набор строк, являющийся результатом выражения запросов БЕЗВЕСТ * РВОМ Т ОМ1ОИ АЕЕ БЕЗВЕСТ * РВОМ Х1 ОМ1ОИ АЬЬ БЕЗВЕСТ * РВОМ Х2; ° Для соединений вида ОМТОМ ЗОТМ пусть Я обозначает набор строк, являющийся результатом выражения запросов БЕЗВЕСТ * РВОМ Х1 Г 1ОМ АЕЬ БЕЗВЕСТ * РВОМ Х2; ° Если в спецификации вида соединения присутствуют ключевые слова ИАТНВАЕ или ЦЯ1ИО, то результат операции совпадает с результатом выражения запросов БЕЗВЕСТ ЯЬСС, ЯЬТ1, ЯЬТ2 РВОМ Я; е Во всех остальных случаях результат операции совпадает с Б, 341 Основы баэ данных К рс Примеры соединений рваного вида Основное назначение приводимых ниже примеров состоит не в том, чтобы продемонстрировать практическую значимость разнообразных соединений, а лишь в том, чтобы помочь в них разобраться.* Поэтому мы будем использовать упрощенные и формальные таблицы и показывать заголовки и тела результирующих таблиц.
Итак, пусть имеются таблицы саЫе1 (а1, а2, с1, с2) и саЫе2 (Ы, Ь2, с1, с2) со следующими телами: саЫе1 СаЫе2 Обозначим через тн таблицу, являющуюся результатом соединения. Тогда для операции саЫе1 1ииек лОти ьаЫе2 Ои а1=Ы лиВ а2<Ь2 (внутреннее соединение по условию) тело тй будет следующим: 7К Строки-дубликаты появились в,тя, поскольку в первом операнде присутствовали строки-дубликаты, удовлетворяющие условию соединения. Результатом операции саЫе1 1ииИи дО1и саЫе2 ОдтиО (с2) (внутреннее соединение по совпадению значений указанных одношиенных столбцов) будет следующая таблица.
ТВ За очевниностью мы опустим пример свозя зозн. 342 Лекция 13 Гр ппировка и словия раздела НАН!М6, порождаемые и соединенные таблкцк Результатоперации саЫа1 1ннее 101н саЬ1е2 031на ~с1,с2е Л1 Такой же результат будет получен при выполнении операции саЫе нлтпель 1ннее тоти с вы е2 (естественное внутреннее соединение). Более то го, для произвольных таблиц саЫе1 и СаЫе2 результаты операций саЫе аней 001и саь1е2 уя1ис (с1, с2, ...сп) и саЫе1 1инек илтнйм, 0011 саЫ е2 совпадают в том и только в том случае, когда список имен столбцов с1 с2,... сп включает все имена столбцов, общие для таблиц саЫ е1 и саЫе2.
Результатом операции саЫе1 ЬЕЕТ 00ТЕЕ 001Н СаЫе2 0Н а1=Ь. Анп а2<ь2 (левое внешнее соединение ло условию) будет следукнцая таблица ,7К Как видно, в результате левого внешнего соединения сохраняютсг все данные первого (левого) операнда. Результатом операции гаЫе1 е16нт 00тее 501и саЫе2 Ом а1=Ь' Анп а2<ь2 (правое внешнее соединение но условию) будет следующая таблица ,ГЕ 343 Основы бвз данных Курс Как видно, в результате правого внешнего соединения сохраняются все данные второго (правого) операнда. Результатом операции саЫе» ГБЬЬ ОБЭП 201и саЫе2 ОН а»=Ы лип а2<Ы (полное внешнее соединение по условию) будет следующая таблица: Л» СаЫе1.с» СаЫе».с2 Ы саЫе2.с» саЫе2.с2 1ПЛ1 НО 1 Н»»ЬЬ»П)ЬЬ Н»Л Ь Н»Л Ь 1ПЛ 1 НОЬЬ»ПЛ Ь МЛ Ь»П)ЬЬ 1ПЛ Ь Н»Л 1 Н»»ЬЬ Н»Л 1 »ПЛ.1 1ПЛ 1 Как видно, в результате полного внешнего соединения сохраняются данные обоих операндов. Кстати, полное внешнее соединение иногда называют еше симметричным внешним соединением.
Очевидно, что все операции внутреннего соединения и операция полного внешнего соединения коммутативны, а операции левого и правого соединения коммутативными не являются, Результатомоперации саые» ькпт Оцткп 2отн саЫе2 пятна (с2) (левое внешнее соединение по совпадению значений указанных одноименных столбцов) будет следующая таблица: лекция 15 Группировка и условия раздела НАЧ(М0, порождаемые и соединенные таблицы Результатом операции ГаЫе1 В10нт 00теи 201и саЫе2 051иО (с21 (правое внешнее соединение по совпадению значений указанных одноименных столбцов) будет следуютцая таблица: тл Результатомоперации сзЫе1 Рц(.Ь 00тЕИ 201и ГаЫе2 051И0 (с2) (полное внешнее соединение по совпадению значений указанных одноименных сслолбцов) будет следующая таблица: Лекция 35 Г уппировка и условия раздела НАУ!М6, пороло3аамыа и сОЕдинЕнныЕ таблицы Результатом операции саые1 гцьь остяк 20133 саЫе2 пк1330 (с2, с3~ (и операции саЫе3 ИАт33кАь ецьь 00тек 20133 Гаые2 — естественное полное внешнее соединение) будет еледуюшая таблица: Наконец, результатом операции Гаые1 0331033 20133 саые2(соединение обьедннение3н) будет следуюшая таблица: Са(33е1.с1 Са(3)е1.с2 С Ые2.