Реляционные операторы
Рефераты >> Программирование и компьютеры >> Реляционные операторы

СОДЕРЖАНИЕ

РЕЛЯЦИОННЫЕ ЯЗЫКИ

РЕЛЯЦИОННАЯ АЛГЕБРА

СЕЛЕКЦИЯ

ПРОЕКЦИЯ

ОБЪЕДИНЕНИЕ

НЕСКОЛЬКО СИНТАКСИЧЕСКИХ УПРОЩЕНИЙ

ТЕСТЫ

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

РЕЛЯЦИОННЫЕ ЯЗЫКИ

Для управления отношениями в реляционных СУБД используются самые разнообразные языки. Некоторые из них являются процедурными, т.е. с их помощью пользователь точно указывает системе, как следует манипулировать данными. Другие языки являются непроцедурными, т.е. пользователь указывает, какие данные ему нужны, а не как их следует извлекать.

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

Реляционное исчисление используется для оценки избирательной мощности реляционных языков. Язык называется реляционно полным, если он позволяет получить любое отношение, которое можно вывести с помощью реляционного исчисления. Большинство реляционных языков запросов является реляционно полными. Однако по сравнению с реляционной алгеброй и реляционным исчислением они обладают и другими, более широкими функциональными возможностями, поскольку в них предусмотрены дополнительные операции, способные выполнять вычислительные, обобщающие и упорядочивающие функции.

Реляционная алгебра и реляционное исчисление представляют собой формальные, а не дружественные пользователю языки. В реляционных базах данных они использовались в качестве основы для разработки других языков управления данными, более высокого уровня. Для нас они представляют интерес потому, что иллюстрируют основные операции языков манипулирования данными, а также служат определённым критерием сравнения других реляционных языков.

РЕЛЯЦИОННАЯ АЛГЕБРА

Реляционная алгебра – это теоретический язык операций, которые на основе одного или нескольких отношений позволяют создавать другое отношение без изменения самих исходных отношений. Таким образом, оба операнда и результат являются отношениями, а потому результаты одной операции могут стать исходными данными для другой операции. Это позволяет создавать вложенные выражения реляционной алгебры точно так же, как создаются вложенные арифметические выражения. Это свойство называется замкнутостью, т.е. отношения покрываются реляционной алгеброй так же, как числа – арифметическими операциями.

Реляционная алгебра является языком последовательного использования отношений, в котором все кортежи, возможно, взятые из разных отношений, обрабатываются одной командой, без организации циклов.

Существует несколько вариантов выбора операций, которые включаются в реляционную алгебру. Исходно Кодд предложил восемь операторов, но впоследствии к ним были добавлены и несколько другие. Пять основных операций релятивной алгебры, а именно селекция (selection), проекция (projection), декартово произведение (Cartesian product), объединение (union) и разность (set difference), выполняют большинство операций извлечения данных, которые могут представлять для нас интерес. На основании пяти основных операций можно также вывести дополнительные операции, такие как операции соединения (join), пересечения (intersection) и деления (division).

Операции селекции и проекции являются унарными, поскольку они работают с одним отношением. Другие операции работают с парами отношений, и поэтому их называют бинарными.

СЕЛЕКЦИЯ

Селекция – это сокращённое название q-селекции, где q обозначает любой скалярный оператор сравнения (=, ¹, >, ³ и т.д.). q-селекцией из отношения А по атрибутам X и Y (в этом порядке)

A WHERE X q Y

называется отношение, имеющее тот же заголовок, что и отношение А, и тело, содержащее множество всех кортежей t отношения А, для которых проверка условия “X q Y” даёт значение истина. Атрибуты X и Y должны быть определены на одном и том же домене, а оператор должен иметь смысл для этого домена. Обратим внимание, что не все операторы сравнения (q) имеют смысл для всех доменов. Например, рассмотрим домен SEX (пол) со значениями “Male” (мужской) и “Female” (женский). Этот очевидный пример показывает, что для таких доменов имеют смысл только операторы сравнения равно и не равно, а оператор меньше не имеет смысла.

Скалярное литеральное значение может быть указано как вместо атрибута X, так и вместо атрибута Y (или, естественно, вместо обоих); на практике это обычный случай. Например:

A WHERE X q literal

В результате выполнения этого оператора селекции получим “горизонтальное” подмножество данного отношения, т.е. такое подмножество кортежей, для которого удовлетворяется указанное условие.

Селекция, как было определено, допускает простые сравнения в выражении WHERE. Однако на основании свойства замкнутости можно однозначно расширить определение до формы, в которой условие в выражении WHERE будет содержать произвольное число логических сочетаний таких простых сравнений благодаря следующим тождествам:

1. A WHERE c1 AND c2 º ( A WHERE c1 )INTERSECT ( A WHERE C2 )

2. A WHERE c1 OR c2 º ( A WHERE c1 ) UNION ( A WHERE c2 )

3. A WHERE NOT c º A MINUS ( A WHERE c )

Поэтому впредь будем подразумевать, что условие сравнения в выражении WHERE для операции селекции содержит произвольное число логических сочетаний простых сравнений (с использованием круглых скобок, если необходимо указать желаемый порядок вычисления). Если условие может быть истолковано как истина или ложь для данного кортежа, то рассматривая такой кортеж как отдельный, это условие называют условием селекции.

Итак, мы определили синтаксическое обозначение условия.

На рисунке 1 приведено несколько примеров селекции.

рис.1

ПРОЕКЦИЯ

Проекцией отношения А по атрибутам X, Y,…, Z, где каждый из атрибутов принадлежит отношению A ( А [X, Y,…, Z ]), называется отношение с заголовком {X, Y,…, Z} и телом, содержащим множество всех кортежей {X:x, Y:y,…, Z:z}, таких, для которых в отношении A значение атрибута X равно x, атрибута Y равно y,…, Z равно z. Таким образом, с помощью оператора проекции получено “вертикальное” подмножество данного отношения, т.е. подмножество, получаемое исключением всех атрибутов, не указанных в списке атрибутов, и последующим исключением дублирующих кортежей (подкортежей) из того, что осталось.


Страница: