Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KIT_VSE.docx
Скачиваний:
10
Добавлен:
25.09.2019
Размер:
166.74 Кб
Скачать

22.Понятия селективной мощности и реляционной полноты реляционных языков.

Селективная мощность реляционных языков – относительная (сравнительная) характеристика языков, определяющая их возможности для получения требуемой информации из базы данных.В качестве эталона при сравнении селективной мощности различных реляционных языков обычно принимается реляционная алгебра Кодда. Селективная мощность языков запросовхарактеризует возможность выбора данных по разным критериям. Язык с большей селективной мощностью позволяет сформулировать большинство запросов так, что ответ на них содержит меньше ненужных данных. Языки, обладающие малой селективной мощностью, в общем случае уже требуют привлечения дополнительных средств для анализа ответов на запросы. Реляционная полнота есть основная мера селективной мощности спецификационного реляционного языка данных. Означает, что реляционный язык должен выполнять любую операцию реляционной алгебры или реляционного исчисления.Язык SQL является реляционно-полным. Это означает, что любой оператор реляционной алгебры может быть выражен подходящим оператором SQL. Для того, чтобы показать, что язык SQL является реляционно-полным, нужно показать, что любой реляционный оператор может быть выражен средствами SQL. На самом деле достаточно показать, что средствами SQL можно выразить любой из примитивных реляционных операторов.

Оператор декартового произведения

Реляционная алгебра: ATIMESB

Оператор SQL:SELECTA.Поле1, A.Поле2, …,B.Поле1, B.Поле2, … FROMA, B; или SELECTA.Поле1, A.Поле2, …, B.Поле1, B.Поле2, … FROM A CROSS JOIN B;

Оператор проекции

Реляционная алгебра: A [X,Y,…,Z]

Оператор SQL: SELECT DISTINCT X, Y, …, Z FROM A;

Оператор выборки

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

ОператорSQL: SELECT *FROMAWHEREc;

Оператор объединения

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

ОператорSQL: SELECT *FROMAUNIONSELECT *FROMB;

Оператор вычитания

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

ОператорSQL: SELECT*FROMAEXCEPTSELECT *FROMB

Реляционный оператор переименования RENAME выражается при помощи ключевого слова AS в списке отбираемых полей оператора SELECT. Таким образом, язык SQL является реляционно-полным. Остальные операторы реляционной алгебры (соединение, пересечение, деление) выражаются через примитивные, следовательно, могут быть выражены операторами SQL. Тем не менее, для практических целей приведем их.

Оператор соединения

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

Оператор SQL: SELECTA.Поле1, A.Поле2, …,B.Поле1, B.Поле2, …FROM A, B WHERE c;или SELECT A.Поле1, A.Поле2, …, B.Поле1, B.Поле2, … FROMACROSSJOINBWHEREc;

Оператор пересечения

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

Оператор SQL: SELECT *FROM AINTERSECTSELECT *FROM B;

Операторделения

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

Оператор SQL: SELECT DISTINCT A.XFROM AWHERE NOT EXIST (SELECT * FROM B WHERE NOT EXIST (SELECT *FROM A A1 WHERE A1.X = A.X AND A1.Y = B.Y));

23.Операция соединения двух отношений (join), ее разновидности

JOIN — оператор языка SQL, позволяющий соединять записи из двух таблиц реляционной базы данных. Входит в раздел FROM оператора SELECT и отдельно от него не используется.

Виды оператора JOIN:

  • INNER JOIN - Оператор внутреннего соединения соединяет две таблицы, причём порядок таблиц для оператора неважен, поскольку оператор является симметричным. Заголовок таблицы-результата является объединением заголовков соединяемых таблиц. Тело результата логически формируется следующим образом. Каждая строка одной таблицы сопоставляется с каждой строкой второй таблицы, после чего для полученной «соединённой» строки проверяется условие соединения . Если условие истинно, в таблицу-результат добавляется соответствующая «соединённая» строка. Описанный алгоритм действий является строго логическим, то есть он лишь объясняет результат, который должен получиться при выполнении операции, но не предписывает, чтобы конкретная СУБД выполняла соединение именно указанным образом. Существует множество способов реализации операции соединения, например соединение вложенными циклами , соединение хэшированием , соединение слиянием. Единственное требование состоит в том, чтобы любая реализация логически давала такой же результат, как при применении описанного алгоритма.

  • CROSS JOIN - операция перекрёстного соединения, или декартова произведения, при которой каждый кортеж одного отношения соединяется с каждым кортежом другого отношения, давая тем самым в результате все возможные сочетания кортежей двух отношений.

  • OUTER JOIN(Внешнее соединение) - Присоединение таблицы с необязательным присутствием записи в таблице. Также как и в случае с innerjoin, условие по индексированным полям и первичному ключу ускоряет все виды outerjoin’ов.

  • LEFT OUTER JOIN(Левое внешнее соединение) - К левой таблице присоединяются все записи из правой, соответствующие условию (по правилам innerjoin), плюс все не вошедшие записи из левой таблицы, поля правой таблицы заполняются значениями NULL.

  • RIGHT OUTER JOIN(Правое внешнее соединение) - Аналогично leftouterjoin, но применяется для правой таблицы. К правой таблице присоединяются все записи из левой, соответствующие условию (по правилам innerjoin), плюс все не вошедшие записи из правой таблицы, поля левой таблицы заполняются значениями NULL.

  • FULL OUTER JOIN(Полное внешнее соединение) - К левой таблице присоединяются все записи из правой, соответствующие условию (по правилам innerjoin), плюс все невошедшие записи из правой таблицы, поля левой таблицы заполняются значениями NULL и плюс все не вошедшие записи из левой таблицы, поля правой таблицы заполняются значениями NULL:*Операция тета-соединение(24); *Экви-соединение(24); *Естественное соединение(24).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]