Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


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




 

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

При описании операций реляционной алгебры будем использовать обозначения: ИФ (ИФ1; ИФ2) — имя исходного (первого исходного; второго исходного) файла; ФР — имя файла результата.

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

Проектирование. Формальная запись:

 

 

Операция не накладывает ограничений на исходный файл. Операция предусматривает следующие действия:

· из ИФ исключаются все поля, имена которых отсутствуют в списке имен полей;

· из полученного файла удаляются повторяющиеся записи.

Пример. Пусть ИФ (КАДРЫ) содержит 4 поля:

Кадры

 

Требуется выполнить операцию

 

ФР = proj [П/Я] (КАДРЫ).

 

Тогда после выполнения операции получим результат

 

 

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

Селекция (выбор). Формальная запись:

 

Эта операция также не накладывает ограничений на ИФ. В ФР заносятся те записи из ИФ, которые удовлетворяют условию поиска. Условие представляет собой логическое выражение, связывающее значения полей ИФ.

Пример. Пусть для приведенного выше ИФ «КАДРЫ» требуется выявить сотрудников П/Я 34 170, имеющих должность «старший инженер». Для отработки такого запроса достаточно выполнить операцию:

 

 

Отметим, что данная операция не изменяет структуру ИФ. Кроме того, при такой формальной записи операции предполагается, что СУБД поддерживает отработку сложных (составных) запросов, в противном случае пришлось бы составное условие поиска отрабатывать последовательно — сначала выявить сотрудников, имеющих должность «старший инженер», а затем из них выделить тех, кто работает на П/Я 34 170 (или наоборот). Иногда такой (последовательный) порядок поиска имеет определенные преимущества — прежде всего в тех случаях, когда на сложный запрос дан отрицательный ответ и непонятно, что послужило причиной этого (в нашем примере — или нет сотрудников должности «старший инженер», или никто из них не «работает» в указанном П/Я, или такого предприятия вообще «нет» в БД).

Соединение. Формальная запись:

 

 

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

Условием выполнения данной операции является наличие в соединяемых файлах одного или нескольких однотипных полей, по которым и осуществляется соединение (эти поля указываются в списке; если список пуст, соединение осуществляется по всем однотипным полям).

В ФР заносятся записи, являющиеся конкатенациями (от англ. concatenate — сцеплять, связывать) записей исходных файлов. Иными словами, в ФР попадают записи ИФ1 и ИФ2 с совпадающими значениями полей, по которым осуществляется соединение («сцепка»).

Пример 1. Пусть, помимо файла «КАДРЫ» имеется файл «ЦЕХ» в котором указаны порядковый НОМЕР сотрудника (как и в первом файле) и НОМЕР_ЦЕХА — номер цеха, в котором данный сотрудник работает.

 

 

 

Тогда после выполнения операции

 

ФР = КАДРЫ >< ЦЕХ.

 

получим

 

 

Следует обратить внимание, что в формате команды не указаны поля соединения. Следовательно, оно осуществляется по единственному однотипному полю (НОМЕР).

Пример 2. Пусть требуется выяснить, в каком цехе п/я 34 170 работает старший инженер Сидоров.

Для этого требуется выполнить операции:

 

 

В результате получим

 

Объединение. Формальная запись:

 

 

Условием выполнения операции является однотипность (одинаковая структура) исходных файлов.

В файл результата заносятся неповторяющиеся записи исходных файлов.

Пример. Пусть в БД имеются два файла: УЧ_Д_КАФЕДРЫ_1 и УЧ_Д_КАФЕДРЫ_2, в которых содержатся данные о читаемых кафедрами № 1 и № 2 учебных дисциплинах:

 

 

 

Тогда после выполнения операции объединения

 

 

получим данные об учебных дисциплинах, читаемых обеими кафедрами:

 

Напомним, что последовательность записей в файлах БД роли не играет.

Разность (вычитание). Формальная запись:

 

 

Условием выполнения операции является однотипность (одинаковая структура) исходных файлов.

В файл результата заносятся записи первого ИФ, которых нет во втором.

Пример. В условиях предыдущего примера выполним операцию

 

 

Получим данные об учебных дисциплинах, читаемых кафедрой № 1 без участия кафедры № 2.

 

Пересечение. Формальная запись:

 

ФР = ИФ1 ИФ2.

Условием выполнения операции является однотипность (одинаковая структура) исходных файлов.

В РФ заносятся записи, присутствующие в обоих ИФ.

Пример. Для уже известных файлов УЧ_Д_КАФЕДРЫ1 и УЧ_Д_КАФЕДРЫ2 выполним операцию пересечения

 

 

Получим данные о совместно читаемых обеими кафедрами дисциплинах:

 

Деление. Формальная запись:

 

 

Для выполнимости операции деления необходимо, чтобы в первом ИФ было больше полей, чем во втором, и для каждого поля второго ИФ существовало однотипное ему поле в первом ИФ.

В ФР, состоящий из полей первого ИФ, не входящих во второй, заносятся те записи, которые согласуются со всеми записями второго ИФ.

Пример. Пусть в БД хранятся два файла, содержащие данные об учебной литературе, выпущенной некоторой кафедрой.

 

 

После выполнения операции деления первого файла на второй (а она возможна, так как в файле «АВТОРЫ» имеются все поля файла ИЗДАНИЯ) получим данные об авторах (соавторах), которые приняли участие в написании всех книг, информация о которых хранится во втором файле:

 

Умножение. Формальная запись:

 

 

Условием выполнения операции умножения является отсутствие в исходных файлах полей с одинаковыми именами.

В ФР, содержащий поля обоих ИФ, заносятся все возможные комбинации записей ИФ1 и ИФ2.

Пример. Пусть в БД хранятся данные об инженерах и старших инженерах (в файлах «СТАРШИЕ_ИНЖЕНЕРЫ» и «ИНЖЕНЕРЫ» соответственно).

 

 

Требуется получить данные о возможных вариантах комплектования дежурных смен управления предприятием в составе одного старшего инженера и одного инженера.

Поскольку имена полей в ИФ1 и ИФ2 совпадают, необходимо в одном из них (например, в ИФ2) поля переименовать (например, вместо «ДОЛЖНОСТЬ» - «ДОЛЖНОСТЬ1»; вместо «ФАМИЛИЯ» - «ФАМИЛИЯ1»). Тогда после выполнения операции

 

 

получим:

 

 

С помощью приведенных выше восьми операций реляционной алгебры можно найти ответ на любой запрос к БД, если, конечно, интересующие пользователя данные в ней хранятся. Типовые запросы могут быть запрограммированы заранее и отрабатываться как процедуры (транзакции). Обработка уникальных (нетиповых) запросов должна предусматривать оперативную разработку последовательности необходимых операций и последующую ее реализацию.





Поделиться с друзьями:


Дата добавления: 2016-11-12; Мы поможем в написании ваших работ!; просмотров: 397 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Начинать всегда стоит с того, что сеет сомнения. © Борис Стругацкий
==> читать все изречения...

2300 - | 2053 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.008 с.