Вы находитесь на странице: 1из 8

Федеральное государственное автономное образовательное учреждение

высшего образования
"Национальный исследовательский университет
"Высшая школа экономики"
 Московский институт электроники и математики им. А.Н.Тихонова
 Департамент компьютерной инженерии

Лабораторная работа № 4
по курсу «Базы данных»
Тема: Выборка данных

Студент: Хахалев Алексей


Группа: БИВ214
Преподаватель:
Дата:
Оценка:

Москва, 2023
Постановка задачи
Работа направлена на изучение операций реляционной алгебры. Ученикам
необходимо написать запросы, которые реализуют операции реляционной алгебры. Если
для демонстрации операций недостаточно отношений, созданных во время выполнения
работы №1, то следует создать дополнительные отношения.

Вариант 29
Л.р. №4. Изучение операций реляционной алгебры. Необходимо написать на языке
SQL запросы, которые реализуют операции реляционной алгебры. Если для демонстрации
операций РА недостаточно отношений, созданных во время выполнения работы №1, то
следует создать дополнительные отношения.

2
Решение 

ER-диаграмма:

Рисунок 1 – ER-диаграмма

1. Операция “Проекция”
Это унарная операция (выполняемая над одним отношением), служащая для
выбора подмножества атрибутов из отношения R. Она уменьшает арность отношения и
может уменьшить мощность отношения за счет исключения одинаковых кортежей.

Для отношения guests выберем уникальные атрибуты


abonement_number, end_date, phone, surname

Код:
SELECT DISTINCT abonement_number, end_date, phone, surname FROM client

2. Операция “Селекция”

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

Для отношения schedule произведём селекцию β group name


¿' Брейк данс ' .

Код:
SELECT * FROM schedule
WHERE group_name = 'Брейк-данс'

3. Декартово произведение

Это бинарная операция над разносхемными отношениями, соответствующая


определению декартова произведения для РМД. Кортежи результирующего отношения
состоят из всех атрибутов исходных отношений.

Для отношений trenet(num) и client(abonement_number) выполним декартово


произведение. Тогда произведение будет иметь вид:

Код:
SELECT num, abonement_number
FROM trener, client

4. Объединение

Объединение – бинарная операция над односхемными отношениями. Объ-


единением односхемных отношений R и S называется отношение T = R U S, которое
включает в себя все кортежи обоих отношений без повторов.

Объединим отношение trener с β num=123 и trener с β num=124:


Код:
SELECT * FROM trener
WHERE num = 123
UNION
SELECT * FROM trener
WHERE num = 124

5. Разность

Разность – бинарная операция над односхемными отношениями. Разностью


отношений R и S называется множество кортежей R, не входящих в S.

Из отношения trener вычтем отношение trener с проекцией β surname =' Mamov ' .
Код:
SELECT * FROM trener

4
WHERE surname NOT IN (
SELECT surname FROM trener
WHERE surname = 'Mamov')

6. Пересечение

Пересечение – бинарная операция над односхемными отношениями. Пере-


сечение односхемных отношений R и S есть подмножество кортежей, принад-
лежащих обоим отношениям. Это можно выразить через разность:
R ∩ S = R – (R – S).

Выберем строки из отношения trener, который находится и в множестве


с surname =' Kudof ' , и в β title ¿ instructor ' .
β '

Код:
SELECT * FROM trener
where surname IN (select surname
from trener
where surname ='Kudof')
AND title IN (select title
where title = 'instructor')

7. Соединение
Соединения – бинарная операция над разносхемными отношениями. Эта операция
определяет подмножество декартова произведения двух разносхемных отношений.
Кортеж декартова произведения включает атрибуты обоих исходных отношений. Он
входит в результирующее отношение, если выполняется условие соединения F, которое
задаёт соотношение значений атрибутов разных таблиц.

Соединим отношения schedule и trener по атрибуту nums.

Код:
SELECT s.group_name, s.trener_num, e.surname, e.trener_name, e.phone
FROM
(SELECT group_name, trener_num
FROM schedule
GROUP BY (group_name,trener_num)) s JOIN trener e ON s.trener_num = e.num

5
Тестирования
1. Проекция

Рисунок 2 – Проекция

2. Селекция

Рисунок 3 – Операция Селекция

3. Декартово произведение

Рисунок 4 – Операция Декартово произведение

6
4. Объединение

Рисунок 5 – Объединение

5. Разность

Рисунок 6 – Разность

6. Пересечение

Рисунок 7 – Вывод пересечения

7. Соединение

Рисунок 8 – Операция соединение

7
Список литературы
1.Документация по PostgreSQL и Postgres Pro [Электронный ресурс]. – URL:
https://postgrespro.ru/docs – (Дата обращения: 8.02.2023).
2.Карпова И.П. Базы данных. Курс лекций и материалы для практических занятий.
– Учебное пособие. – Издательство "Питер", 2013. – 240 с.

Вам также может понравиться