Дополнительные операции реляционной алгебры
Дополнительные операции реляционной алгебры
Дейт предложил следующие дополнительные операции:
1. Переименование. Операция переименования позволяет изменить имя атрибута отношения и имеет вид:
RENAME <исходное отношение> <старое имя атрибута> AS <новое имя атрибута>,
где <исходное отношение> задается именем отношения либо выражением реляционной алгебры. В последнем случае выражение заключается в круглые скобки.
Пример, RENAME Город_П AS Город_размещения _Поставщика.
Замечание.
Для удобства записи выражений одновременного переименования нескольких атрибутов Дейтом введена операция множественного переименования, которая представляется следующим образом:
RENAME <отн.><ст.имя атр.1> AS <нов.имя атр.1>,<ст.имя атр2> AS <нов.имя атр.2>, …, <ст.имя атрN> AS <нов.имя атр.N>
Рекомендуемые материалы
2. Расширения. Операция расширения порождает новое отношение, похожее на исходное, но отличающееся наличием добавленного атрибута, значения которого получаются путем некоторых скалярных вычислений. Операция расширения имеет вид:
EXTEND <исходное отношение> ADD <выражение> AS <новый атрибут>,
где к исходному отношению добавляется <новый атрибут>, подсчитываемый по правилам, заданным <выражением>. Исходное отношение может быть задано именем отношения и с помощью выражения реляционной алгебры, заключенного в круглые скобки. При этом имя нового атрибута не должно входить в заголовок исходного отношения и не может использоваться в <выражении>. Помимо обычных арифметических операций и операций сравнения, в выражении можно использовать различные функции, называемые итоговыми, такими как: COUNT (количество), SUM (сумма), AVG (среднее), MAX (максимальное), MIN (минимальное).
Пример, EXTEND (P JOIN SP) ADD (Вес*Количество) AS Общий_Вес.
Замечание.
1. Пользуясь операцией расширения, можно выполнить переименование атрибута. Для этого нужно в выражении указать имя атрибута, в конструкции AS определить новое имя этого атрибута, затем выполнить проекцию полученного отношения на множестве атрибутов, исключая старый атрибут. Таким образом, запись (EXTEND S ADD Город_П AS Город) [П#, Имя, Статус, Город] эквивалента конструкции S RENAME Город_П AS Город.
2. Подобно тому, как это сделано для операции переименования, Дейт определил операцию множественного расширения, которая позволяет в одной синтаксической конструкции вычислять несколько новых атрибутов.
EXTEND <отн.> ADD <выр.1> AS <атр.1>, <выр.2> AS <атр.2>, …, <выр.N> AS <атр.N>
3. Подведение итогов. Операция подведения итогов SUMMARIZE выполняет вертикальные или групповые вычисления и имеет следующий формат:
SUMMARIZE <исх.отн.> BY (<список атрибутов>) ADD <выр.> AS <новый атрибут>,
где исходное отношение задается именем отношения либо заключенными в круглые скобки выражением реляционной алгебры, <список атрибутов> представляет собой разделенными запятыми имена атрибутов исходного отношения А1, А2, …, АN, <выр.> - скалярное выражение, аналогичное выражению операции EXTEND, а <новый атрибут> - имя формируемого атрибута. В списке атрибутов и в выражении не должен использоваться <новый атрибут>.
Результатом операции SUMMARIZE является отношение R с заголовком, состоящим из атрибутов списка, расширенного новым атрибутом. Для получения тела отношения R сначала выполняется проецирование (проекция R1) исходного отношения на атрибуты А1, А2, …, АN, после чего каждый кортеж проекции расширяется новым (N+1) атрибутом. Поскольку проецирование, как правило, приводит к сокращению количества кортежей по отношению к исходному отношению (удаляются одинаковые кортежи), тьо можно считать, что происходит своеобразное группирование кортежей исходного отношения: одному кортежу отношения R1 соответствует один или более (если было дублирование при проецировании) кортежей исходного отношения. Значение (N+1)-го атрибута каждого кортежа отношения R формируется путем вычисления выражения над соответствующей этому кортежу группой кортежей исходного отношения.
Пример. Пусть требуется вычислить количество поставок по каждому из поставщиков.
SUMMARIZE SP BY (П#) ADD COUNT AS Количество_поставок
П# | Количество_поставок |
S! | 6 |
S2 | 2 |
S3 | 1 |
S4 | 3 |
Функция COUNT определяет количество кортежей в каждой группе исходного отношения.
Операция множественного подведения итогов, подобно соответствующим операциям переименования и расширения, выполняет одновременно несколько вертикальных вычислений и записывает результаты в отдельные новые атрибуты.
Пример,
SUMMARIZE SP BY (Д#) ADD SUM Количество AS Общее_число_поставок AVG Количество AS Среднее_число_поставок.
4. Присвоение. Операция присвоения имеет вид:
<выражение_цель>:= <выражение_источник>,
где оба выражения задают совместимые (точнее, эквивалентные) по структуре отношения. Типичный случай выражения: в левой части – имя отношения, а в правой – некоторое выражение реляционной алгебры. Выполнение операции присвоения сводится к замене предыдущего значения отношения на новое .
С помощью операции присвоения можно не только полностью заменить все значения отношения_цельи, но и добавить или удалить кортежи.
Пример. В отношении Ы дописывается один кортеж:
S:=S UNION {{<П#:’S6’>, <Имя: 'Борис'>, <Статус:’50’>, <Город_П:'Мадрид'>}}
Более удобными операциями изменения тела отношения являются операции вставки, обновления м удаления.
5. Вставка. Операция вставки имеет вид:
INSERT <выражение_источник> INTO <выражение_цель>
Пример. INSERT (S WHERE Город_П='Москва') INTO Temp
6. Обновление. Операция обновления имеет вид:
UPDATE <выражение_цель> <список элементов>,
где <список элементов> представляет собой последовательность разделенных запятыми операций присвоения <атрибут>:=<скалярное выражение>. Результатом выполнения операции обновления является отношение, полученное после присвоения соответствующих значений атрибутам отношения, заданного целевым выражением.
Пример. UPDATE P WHERE Тип='каленый' Город:=’Москва’. Эта операция предписывает изменить значение атрибута Город (независимо от того, каким оно было) на новое значение – 'Москва' таких кортежей отношение P, атрибут Тип которых имеет значение 'каленый'.
7. Удаление. Операция удаление имеет вид:
DRLETE <выражение_цель>,
где <выражение_цель> представляет собой реляционное выражение, описывающее удаляемые кортежи.
Пример. DELETE S WHERE Статус<20
8. Реляционное сравнение. Операция реляционное сравнение может использоваться для прямого сравнения двух отношений. Она имеет вид:
<выражение1> Q <выражени2>,
где оба выражения задают совместимые по структуре отношения, а Q – один из следующих операторов сравнения: = (равно), ≠ (не равно), ≤ (собственное подмножество), < (подмножество), ≥ (надмножество), > (собственное надмножество).
Пример. S [Город_П] = P [Город_Д] сравнивает совпадают ли города поставщиков и города хранения деталей.
Основные правила записи выражений.
Результатом произвольной реляционной операции является отношение, которое, в свою очередь, может участвовать в другой реляционной операции. Это свойство реляционной алгебры называется свойством замкнутости. Это свойство позволяет записывать вложенные выражения.
При записи произвольного выражения реляционной алгебры надо принимать во внимание следующее:
Ещё посмотрите лекцию "Белки плазмы крови" по этой теме.
1. В реляционной алгебре должен быть определен приоритет выполнения операций, например операция пересечение более приоритетна чем операция объединение. Этот приоритет нужно учитывать при записи выражений. Для изменения порядка выполнения операций в выражениях можно использовать круглые скобки.
2. Существуют тождественные преобразования, позволяющие по-разному записывать одно и то же выражение. Например, следующие выражения эквивалентны (здесь A – отношение, C, C1, C2 – выражения):
A WHERE C1 AND C2 и (A WHERE C1) INTERSECT (A WHERE C2)
A WHERE C1 OR C2 и (A WHERE C1( UNION (A WHERE C2)
A WHERE NOT C и A MINUS (A WHERE C)
3. Составляя выражение, нужно обеспечивать совместимость участвующих в операциях отношений. При необходимости изменения заголовков следует выполнять переименование атрибутов.