Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009 (1084484), страница 15
Текст из файла (страница 15)
Правила записи формулы f такие же, как и для операции селекции.Другими словами, соединением отношения R1 по атрибуту А с отношением R2 по атрибуту В (отношения не имеют общих имен атрибутов) являетсярезультат выполнения операции вида:(R1 TIMES R2) W H E R E А 0 В,где Q — логическое выражение над атрибутами, определенными на одном (нескольких — для составного атрибута) домене. Соединение C f (Rl, R2), гдеформула f имеет произвольный вид (в отличие от частных случаев, рассматриваемых далее), называют также Q-соединением.Важными с практической точки зрения частными случаями соединенияявляются эквисоединение и естественное соединение.Операция эквисоединения характеризуется тем, что формула задает равенство операндов. Приведенный выше пример демонстрирует частный случай операции эквисоединения по одному столбцу. Иногда эквисоединение двух отно-Часть 1.
Основы построения74баз данныхшений выполняется по таким столбцам, атрибуты которых в обоих отношениях имеют соответственно одинаковые имена и домены. В этом случае говорят об эквисоединении по общему атрибуту.Операция естественного соединения (операция J O I N ) применяется к двумотношениям, имеющим общий атрибут (простой или составной). Этот атрибут в отношениях имеет одно и то же имя (совокупность имен) и определенна одном и том же домепе (доменах).Результатом операции естественного соединения является отношение R,которое представляет собой проекцию эквисоединения отношений R1 и R2 по общему атрибуту на объединенную совокупность атрибутов обоих отношений.Пример 6.
Q-соединение.Необходимо найти соединение отношений S и Р по атрибутам Город_Г1 иГород_Д соответственно, причем кортежи результирующего отношения должны удовлетворять отношению «больше» (в смысле лексикографическогопорядка — по алфавиту).(S TIMES Р) W H E R E Город_П > Город_ДПример 7. Эквисоединение.п#ИмяСтатусS2Иван10КиевS2Иван10S2ИванS3S3Город_П Д#НазваниеТипВесГород_ДР1гайкакаленый12МоскваКиевР4винткаленый14Москва10КиевР6шпилькакаленый19МоскваБорис30КиевР1гайкакаленый12МоскваБорис30КиевР4винткаленый14МоскваКиев30Р6 шпилька каленыйS3 Борис19МоскваПусть необходимо найти естественное соединение отношений S и Р по общему атрибуту, характеризующему город (в отношении S — это Город_П, а вотношении Р — Город_Д). Поскольку условие операции требует одинаковости имен атрибутов, по которым выполняется соединение, то применяется операция RENAME переименования атрибутов.(S RENAME Город_П AS Город) JOIN ( Р RENAME Город_Д AS Город)П#ИмяСтатусГородД#НазваниеТипВесS1Сергей20МоскваР1гайкакаленый12S1Сергей20МоскваР4винткаленый14S1Сергей20МоскваР6шпилькакаленый19S2Иван10КиевР2болтмягкий17S2Иван10КиевР5палецтвердый123.
Реляционнаямодельданных75S3Борис30КиевР2болтмягкий17S3Борис30КиевР5палецтвердый12S4Николай20МоскваР1гайкакаленый12S4Николай20МоскваР4винткаленый14S4Николай20МоскваР6шпилькакаленый19Дополнительные операции реляционной алгебры, предложенные Дейтом,включают следующие операции.Операция переименованияпозволяет изменить имя атрибута отношения и имеет вид:RENAME <исходное отношение> <старое имя атрибута> AS <новоеимя атрибута>,где <исходное отношение> задается именем отношения либо выражением реляционной алгебры. В последнем случае выражение заключают в круглые скобки.Например, RENAME Город_П AS Город_размещения_Поставщика.Замечание.Для удобства записи выражений одновременного переименования нескольких атрибутов Дейтом введена операция множественногопереименования,которая представима следующим образом:RENAME <отн.> <ст. имя атр.1> AS <нов.
имя атр.1>,<ст. имя атр.2>AS <нов. имя агр.2>,... ,<ст. имя aTp.N> AS <нов. имя атр.№>.Операция расширения порождает новое отношение, похожее на исходное, по отличающееся наличием добавленного атрибута, значения которогополучаются путем некоторых скалярных вычислений. Операция расширения имеет вид:EXTEND <исходное отношение> ADD <выражение> AS <новый атрибут>,где к исходному отношению добавляется (ключевое слово ADD) <новый атрибуту подсчитываемый по правилам, заданным <выражением>.
Исходноеотношение может быть задано именем отношения и с помощью выраженияреляционной алгебры, заключенного в круглые скобки. При этом имя новогоатрибута не должно входить в заголовок исходного отношения и не может использоваться в <выражении>. Помимо обычных арифметических операций иопераций сравнения, в выражении можно использовать различные функции,называемые итоговыми, такие как: COUNT (количество), SUM (сумма), AVG(среднее), МАХ (максимальное), MIN (минимальное).Например,EXTEND ( Р J O I N SP) ADD (Вес * Количество) AS 06щий_Вес.76Часть 1.
ОсновыпостроениябазданныхЗамечания.• Пользуясь операцией расширения, можно выполнить переименованиеатрибута. Д л я этого нужно в выражении указать имя атрибута, в конструкции AS определить новое имя этого атрибута, затем выполнить проекцию полученного отношения на множество атрибутов, исключая старый атрибут.
Таким образом, запись ( E X T E N D S A D D Город_П ASГород) [П#, Имя, Статус, Город] эквивалента конструкции S RENAMEГород_Г1 AS Город.• Подобно тому, как это сделано для операции переименования, Дейт определил операцию множественного расширения, которая позволяет в одной синтаксической конструкции вычислять несколько новых атрибутов. Формально операция представима следующим образом:E X T E N D < о т н > ADD<выр.1> AS<атр.1>,<выр.2>AS <атр.2>,... ,<Bbip.N> AS <aTp.N>.Операция подведения итогов S U M M A R I Z E выполняет «вертикальные»или групповые вычисления и имеет следующий формат:S U M M A R I Z E <исх.
отн.> BY (<список атрибутов>) ADD <выр.>AS <новый атрибут>,где исходное отношение задается именем отношения либо заключенным вкруглые скобки выражением реляционной алгебры, <список атрибутов>представляет собой разделенные запятыми имена атрибутов исходного отношения A l , А2,..., AN, < в ы р . > — скалярное выражение, аналогичное выражению операции E X T E N D , а <новый атрибут> — имя формируемогоатрибута. В списке атрибутов и в выражении не должен использоваться<новый атрибут>.Результатом операции SUMMARIZE является отношение R с заголовком, состоящим из атрибутов списка, расширенного новым атрибутом. Для получения телаотношения R сначала выполняется проецирование (назовем проекцию R1) исходного отношения на атрибуты Al, А2,..., AN, после чего каждый кортеж проекциирасширяется новым (N+1)-M атрибутом.
Поскольку проецирование, как правило,приводит к сокращению количества кортежей по отношению к исходному отношению (удаляются одинаковые кортежи), то можно считать, что происходит своеобразное группирование кортежей исходного отношения: одному кортежу отношения R1 соответствует один или более (если было дублирование при проецировании)кортежей исходного отношения. Значение (N+l)-ro атрибута каждого кортежа отношения R формируется путем вычисления выражения над соответствующей этому кортежу группой кортежей исходного отношения.Пример 8. Подведение итогов.Пусть требуется вычислить количество поставок по каждому из поставщиков.3.
Реляционнаямодельданных77SUMMARIZE SP BY ( П # ) ADD C O U N T AS Количество_поставокп#Количество_поставокS16S22S31S43Отметим, что функция C O U N T определяет количество кортежей в каждой из групп исходного отношения.Операция множественного подведения итогов, подобно соответствующим операциям переименования и расширения, выполняет одновременно несколько «вертикальных» вычислений и записывает результаты в отдельные новые атрибуты.Простейшим примером такой операции может служить следующая запись:SUMMARIZE SP BY ( Д # ) ADD SUM Количество AS Общее_число_поставок AVG Количество AS Среднее_число_поставок.К основным операторам, позволяющим изменять тело существующего отношения, отнесем операции реляционного присвоения, вставки, обновления и удаления.Операцию присвоения можно представить следующим образом:<выражение-цель> := <выражение-источник>,где оба выражения задают совместимые (точнее, эквивалентные) по структуре отношения.
Типичный случай выражений: в левой части — имя отношения, а в правой — некоторое выражение реляционной алгебры. Выполнениеоперации присвоения сводится к замене предыдущего значения отношенияна новое (начальное значение, если тело отношения было пустым), определенное выражением-источником.С помощью операции присвоения можно не только полностью заменитьвсе значения отношения-цели, но и добавить или удалить кортежи. Приведем пример, в котором в отношение S дописывается один кортеж:S := S UNION {{< П# : 'S6' >, < Имя: 'Борис' >, < Статус: '50' >,< Город_П : 'Мадрид' >}}.Более удобными операциями изменения тела отношения являются операции вставки, обновления и удаления.Операция вставки INSERT имеет следующий вид:INSERT <выражение-источник> INTO <выражение-цель>,где оба выражения должны быть совместимы по структуре. Выполнение операции сводится к вычислению <выражение-источник> и вставке полученных кортежей в отношение, заданное <выражение-цель>.Часть 1.
Основы построения78базданныхПример. INSERT (S W H E R E Город_П='Москва') INTO Temp.Операция обновления UPDATE имеет следующий вид:UPDATE <выражение-цель> <список элементов>,где <список элемептов> представляет собой последовательность разделенных запятыми операций присвоения <атрибут> := <скалярное выражениемРезультатом выполнения операции обновления является отношение, полученное после присвоения соответствующих значений атрибутам отношения,заданного целевым выражением.Например, UPDATE Р WHERE Тип='каленый' Город := 'Киев'.
Эта операцияпредписывает изменить значение атрибута Город (независимо от того, каким онобыло) на новое значение — 'Киев' таких кортежей отношения Р, атрибут Тип которых имеет значение 'каленый'.Операция удаления DELETE имеет следующий вид:DELETE <выражение-цель>,где <выражение-цель> представляет собой реляционное выражение, описывающее удаляемые кортежи.Например, DELETE S W H E R E Статус < 20.Операция реляционного сравнения может использоваться для прямогосравнения двух отношений. Она имеет синтаксис:<выражение1> О <выражение2>,где оба выражения задают совместимые по структуре отношения, а знак О —один из следующих операторов сравнения: = (равно), Ф (не равно), < (собственное подмножество), < (подмножество), > (надмножество), > (собственное надмножество).Например, сравнение: «Совпадают ли города поставщиков и города хранения деталей?» можно записать так: S [Город_П] = Р [Город_Д].Основные правила записи выражений.