referat (664698), страница 6
Текст из файла (страница 6)
Первая формулировка заслуживает более подробного обсуждения. Именно одна из трёх предложенных вариантов является допустимой в первоначальной версии языка SQL (явная операция JOIN была добавлена в стандарт SQL/92). Концептуально можно рассматривать реализацию этой версии запроса следующим образом.
-
Во-первых, после выполнения предложения FROM мы получаем декартово произведение S TIMES P. (Строго говоря, перед вычислением произведения следовало бы позаботится о переименовании столбцов. Для простоты мы этого не делаем.)
-
Во-вторых, после выполнения предложения WHERE мы получаем выборку из этого произведения, в которой два значения атрибута CITY в каждой строке равны (иначе говоря, выполнено соединение таблиц поставщиков и деталей по эквивалентности их атрибутов городов).
-
В-третьих, после выполнения предложения SELECT мы получаем проекцию выборки по столбцам, указанным в предложении SELECT. Конечным результатом будет естественное соединение указанных таблиц.
Следовательно, предложение FROM в языке SQL соответствует декартову произведению, предложение WHERE ─ операции выборки, а совместное применение предложений SELECT-FROM-WHERE ─ проекции выборки произведения.
7. Заключение.
Мы рассмотрели реляционное исчисление, альтернативное реляционной алгебре.
Внешне два подхода очень отличаются: исчисление имеет описательный характер, тогда как характер алгебры ─ предписывающий, но на более низком уровне они представляют собой одно и то же, поскольку любые выражения исчисления могут быть преобразованы в семантически эквивалентные выражения алгебры и наоборот.
Реляционное исчисление существует в двух версиях: исчисление кортежей и исчисление доменов. Основное различие между ними состоит в том, что переменные исчисления кортежей изменяются на отношениях, а переменные исчисления доменов изменяются на доменах.
Выражение исчисления кортежей состоит из прототипа кортежа и необязательного предложения WHERE, содержащего логическое выражение или формулу WFF («правильно построенную формулу»). Подобная формула WFF может включать кванторы (EXISTS и FORALL), свободные и связанные ссылки на переменные, логические (булевы) операторы (AND, OR, NOTи др.) и т.д. Каждая свободная переменная, которая встречается в формуле WFF, также должна быть упомянута в прототипе кортежа.
Замечание. Здесь этот вопрос явно не затрагивался, но выражения реляционного исчисления предназначены, по существу, для тех же целей, что и выражения реляционной алгебры.
На примере было показано1, как алгоритм редукции Кодда может использоваться для преобразования произвольного выражения реляционного исчисления в эквивалентное выражение реляционной алгебры, таким образом подготавливая почву для выбора возможной стратегии реализации исчисления. Вновь обратившись к вопросу реляционной полноты, мы кратко обсудили, каким образом можно доказать, что некоторый язык L является полным в этом смысле.
Кроме того, здесь обсуждалось, как можно расширить исчисление кортежей с целью поддержки определённых вычислительных возможностей (аналогичные возможности в реляционной алгебре обеспечиваются операциями EXTEND и SUMMARIZE). Затем нам было представлено краткое введение в исчисление доменов и отмечено (правда, без попытки доказать это), что оно также является реляционно полным. Таким образом, исчисление кортежей, исчисление доменов и реляционная алгебра эквивалентны.
И наконец, нашему вниманию был представлен обзор соответствующих средств языка SQL. Язык SQL является своеобразной смесью реляционной алгебры и исчисления (кортежей
). Например, в нём есть прямая поддержка таких операций реляционной алгебры, как соединение и объединение, но одновременно с этим используются переменные кортежей и квантор существования из реляционного исчисления. SQL – запрос представляет собой табличное выражение. Обычно такая конструкция содержит единственное выражение выборки, однако поддерживаются и различные типы явных выражений операций соединения (JOIN), причём выражения соединения и выборки могут комбинироваться произвольным образом с помощью операторов UNION, INTERSECT и EXCEPT. Также упоминалось о возможности использования предложения ORDER BY для определения упорядоченности строк в таблице, являющейся результатом вычисления данного табличного выражения (любого вида).
В частности, были описаны следующие компоненты выражений выборки.
-
Базовое предложение SELECT, в том числе использование ключевого слова DISTINCT, скалярных выражений, введение имён результирующих столбцов и использование предложения SELECT *
-
Предложение FROM, включая использование переменных кортежей
-
Предложение WHERE, включая использование оператора EXISTS
-
Предложение GROUP BY и HAVING, включая использование обобщающих функций COUNT, SUM, AVG, MAX и MIN
-
Использование подзапросов в предложениях SELECT, FROM и WHERE
Кроме того, здесь был описан концептуальный алгоритм вычисления (т.е. схема формального определения) для выражений выборки.
8. Список литературы.
-
«Введение в системы баз данных» К.Дж.Дейт, издательство «Питер», СПб 2002г.
-
«Базы данных: модели, разработка, реализация» учебник под редакцией Т.Карповой, издательство «Питер», СПб 2001г.
-
«Системы баз данных» Г.Гаремо-Малино, Москва 2003г.
8. Список литературы.
-
«Введение в системы баз данных» К.Дж.Дейт, издательство «Питер», СПб 2002г.
-
«Базы данных: модели, разработка, реализация» учебник под редакцией Т.Карповой, издательство «Питер», СПб 2001г.
-
«Системы баз данных» Г.Гаремо-Малино, Москва 2003г.
1 Сравнительный анализ реляционного исчисления и реляционной алгебры.