Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 7. Операторы реляционной алгебры.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
157.18 Кб
Скачать

Лекция 7. Операторы реляционной алгебры

В лекции рассматриваются основные операторы реляционной алгебры и приводятся примеры их реализации на языке SQL.

Цель: познакомить с основными реляционными операторами.

Понятие реляционной алгебры

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

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

Обычно выделяют 8 основных операторов реляционной алгебры и несколько дополнительных (их количество меняется со временем). Мы рассмотрим два дополнительных оператора: расширения и подведения итогов.

Основные операторы реляционной алгебры

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

1. Традиционные операции с множествами, модифицированные для таблиц (отношений).

1) Объединение: a union b

Результатом операции объединения является отношение, содержащее все кортежи, принадлежащие одному из двух или обоим отношениям.

В отличие от объединения множеств, результатом объединения отношений должно стать отношение, а не набор разнородных кортежей.

При объединении должны соблюдаться два условия:

  • отношения должны быть совместимы по типу, т.е. иметь одно и то же множество атрибутов, определённых на одних и тех же доменах;

  • результатом каждой операции должно быть также отношение (свойство замкнутости).

Пусть имеется отношение Students:

StudentID

Name

GroupID

BirthDate

1

Казаков Петр

2

23.04.1990

2

Васильев Иван

1

11.05.1991

4

Шишкина Дарья

2

23.09.1991

И отношение Teachers:

TeacherID

Name

BirthDate

1

Кислицын О.П.

1.2.1970

2

Царев С.М.

10.03.1964

4

Пестов Д.Н.

2.05.1980

Нам требуется вывести список всех преподавателей и студентов с указанием их дня рождения. Для этого можно использовать следующие операторы SQL:

SELECT Name, BirthDate FROM Students

UNION

SELECT Name, BirthDate FROM Teachers

Результатом выполнения будет следующее отношение:

Name

BirthDate

Казаков Петр

23.04.1990

Васильев Иван

11.05.1991

Шишкина Дарья

23.09.1991

Кислицын О.П.

1.2.1970

Царев С.М.

10.03.1964

Пестов Д.Н.

2.05.1980

2) Пересечение: a intersect b

Результатом операции пересечения является отношение, содержащее кортежи, которые принадлежат обоим отношениям.

Для операции пересечения необходимы те же два условия, что и для объединения: совместимость по типу и замкнутость.

Пример: рассмотрим отношение Teachers (преподаватели) и Supervisors (кураторы, могут руководить преподавателями):

Teachers:

TeacherID

Name

BirthDate

1

Кислицын О.П.

1.2.1970

2

Царев С.М.

10.03.1964

4

Пестов Д.Н.

2.05.1980

Supervisors:

SupervisorID

Name

BirthDate

1

Кислицын О.П.

1.2.1970

2

Царев С.М.

10.03.1964

4

Нечаев Н.В.

12.08.1970

Требуется вывести всех преподавателей (из таблицы Teachers), которые одновременно являются кураторами.

SELECT Name FROM Teachers

INTERSECT

SELECT Name FROM Supervisors

Результатом выполнения запроса будет:

Name

Кислицын О.П.

Царев С.М.