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

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

Рассмотрим некоторые из них.

Объединение – возвращает отношение, содержащее все кортежи, принадлежащие первому или второму отношению.

Пример: До операции «объединение» существовало две таблицы:

ФИО Год рождения Пол   ФИО Год рождения Пол
Иванов С.Н   м   Иванов С.Н.   м
Смирнова Р.М.   ж   Сергеева Е.Д.   ж
Радченко С.В.   ж        
Уткин О.Ф.   м        

После операции «объединение» получена одна таблица, содержащая все данные, находившиеся ранее хотя бы в одной из таблиц.

ФИО Год рождения Пол
Иванов С.Н   м
Смирнова Р.М.   ж
Радченко С.В.   ж
Уткин О.Ф.   м
Сергеева Е.Д.   ж

Пересечение – возвращает отношение, содержащее все кортежи, принадлежащие и первому и второму отношению.

Пример: До операции «пересечение» существовало две таблицы:

ФИО Год рождения Пол   ФИО Год рождения Пол
Иванов С.Н   м   Иванов С.Н.   м
Смирнова Р.М.   ж   Сергеева Е.Д.   ж
Радченко С.В.   ж        
Уткин О.Ф.   м        

После операции «пересечение» получена одна таблица, содержащая все данные, находившиеся ранее в обеих таблицах.

ФИО Год рождения Пол
Иванов С.Н   м

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

Пример: До операции «разность» существовало две таблицы:

ФИО Год рождения Пол   ФИО Год рождения Пол
Иванов С.Н   м   Иванов С.Н.   м
Смирнова Р.М.   ж   Сергеева Е.Д.   ж
Радченко С.В.   ж        
Уткин О.Ф.   м        

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

ФИО Год рождения Пол
Смирнова Р.М.   ж
Радченко С.В.   ж
Уткин О.Ф.   м
Сергеева Е.Д.   ж

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

Пример: До операции «Произведение» существовало две таблицы, содержащие в частности, следующие поля:

Должность   Номер кафедры
Зав. Кафедрой    
Старший преподаватель    
Преподаватель    

После операции «Произведение» получена одна таблица, содержащая

Должность Номер кафедры
Зав. Кафедрой  
Старший преподаватель  
Преподаватель  
Зав. Кафедрой  
Старший преподаватель  
Преподаватель  

Выборка (селекция) – возвращает отношение, содержащее все кортежи из данного отношения, которые удовлетворяют указанным условиям.

На практике эту операцию удобно представить как отбор из таблицы ряда строк, удовлетворяющих указанному критерию.

Пример: – из списка студентов выбрать юношей 1990-го года рождения.

До операции «выборка» существовала таблица:

ФИО Год рождения Пол
Иванов С.Н   м
Смирнова Р.М.   ж
Радченко С.В.   ж
Уткин О.Ф.   м
Сергеева Е.Д.   ж

После этой операции:

ФИО Год рождения Пол
Уткин О.Ф.   м

Проекция – возвращает отношение, содержащее все кортежи из данного отношения, которые остались, поле исключения нескольких полей.

Пример: До операции «проекция» существовала таблица:

ФИО Год рождения Пол
Иванов С.Н   м
Смирнова Р.М.   ж
Радченко С.В.   ж
Уткин О.Ф.   м
Сергеева Е.Д.   ж

После этой операции:

ФИО Год рождения
Иванов С.Н  
Смирнова Р.М.  
Радченко С.В.  
Уткин О.Ф.  
Сергеева Е.Д.  

Соединение двух отношений по заданному условию – возвращает новое отношение, которое является, по сути, выборкой из произведения.

Реляционное деление отношений с длиной кортежей к1 и к2, (к1>к2), возвращает новое отношение, состоящее из кортежей длины (к1-к2), таких, что для всех кортежей s, принадлежащих S кортеж ts принадлежит R.

Алгоритм вычисления:

Пусть – n количество строк отношения S.

а) цикл: от i=1 до n

начало:

- выделить из R кортежи с окончанием, равным i-ой строке S.

- полученный результат сохранить в виде множества кортежей Qi.

конец.

б) результат деления равен пересечению полученных множеств Qi, i = 1,…, n.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: