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

3) Вычитание: a minus 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

EXCEPT

SELECT Name FROM Supervisors

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

Name

Пестов Д.Н.

4) Произведение: a times b

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

Для произведения необходимо свойство замкнутости, т.е. результатом является не просто множество пар кортежей, а множество целых кортежей. В реляционной алгебре каждая пара кортежей заменяется одним благодаря сцеплению (сцепление – это объединение в смысле теории множеств, а не реляционной алгебры).

При произведении может возникнуть проблема одинаковых имён атрибутов. В этом случае одно из конфликтующих полей необходимо переименовать.

Пример: рассмотрим отношения Students и Courses (учебные курсы):

Students:

StudentID

Name

GroupID

BirthDate

1

Казаков Петр

2

23.04.1990

2

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

1

11.05.1991

4

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

2

23.09.1991

Courses:

CourseID

Name

1

Базы данных

2

Технологии программирования

3

Программирование в среде С++

Требуется для каждого студента вывести список всех доступных учебных курсов. Составим следующий код:

SELECT Students.Name AS ‘Student’, Courses.Name AS ‘CourseName’

FROM Students

CROSS JOIN Courses

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

Name

Name

Казаков Петр

Базы данных

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

Базы данных

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

Базы данных

Казаков Петр

Технологии программирования

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

Технологии программирования

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

Технологии программирования

Казаков Петр

Программирование в среде С++

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

Программирование в среде С++

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

Программирование в среде С++

2. Специальные реляционные операции.