Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Белобжеский_Лекции_по_ББД.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
5.5 Mб
Скачать

Реляционные языки

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

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

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

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

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

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

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

Операции выборки и проекции являются унарными, поскольку они работают с одним отношением. Другие операции работают с парами отношений, и поэтому их называют бинарными операциями. В приведенных ниже определениях R и S-это два отношения, определенные над атрибутами А=(а12,... ,aN) и В=(b1,b2,... ,bМ) соответственно.

Для иллюстрации результатов выполнения операций мы воспользуемся отношениями базы данных учебного проекта DreamHome, содержащими сведения об аренде недвижимости (см. табл. 3.3-3.8 ниже). Материал по Учебному проекту DreamHome выдан студентам в электронном виде. Поэтому можно не рассматривать этот материал подробно, а дать на самостоятельную проработку. Итак, ненадолго отвлечемся от раздела «Реляционная алгебра», чтобы рассмотреть учебный проект DreamHome, а потом вновь вернемся к этому разделу.

Электронная версия этого раздела дана студентам