Нижегородский государственный университет
имени Н. И. Лобачевского
Кафедра информатики и автоматизации научных исследований
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
по курсам «Теория информационных систем» и «Базы данных»
Разделы «Реляционная алгебра» и «Язык SQL»
Нижний Новгород 2005
УДК 519.6
Методические указания по курсам «Теория информационных систем» и «Базы данных». Разделы «Реляционная алгебра» и «Язык SQL»
/Сост. Фомина И.А., Исаев С.А. - Нижний Новгород: Нижегородский государственный университет, 2005.
Материал предназначен для студентов специальности “Прикладная информатика” факультета ВМК (формы обучения дневная, вечерняя, заочная). Он также может быть интересен всем, кто в силу научных, учебных и практических целей заинтересован в рассмотрении абстрактной трактовки запросов в рамках реляционной модели и изучении языка запросов SQL. Данные методические указания могут быть использованы как помощь при изучении теоретического материала и при выполнении практических и лабораторных работ в терминал - классе.
Составители - канд. техн. наук, доцент Фомина И.А.
канд. техн. наук, ассистент Исаев С.А.
Рецензент - канд. техн.-наук, доцент Карпенко С.Н.
Нижегородский государственный университет имени Н.И.Лобачевского 2005г.
Впервые термин "реляционная модель данных" появился в статье сотрудника фирмы IBM д-ра Кодда (Codd E.F., A Relational Model of Data for Large Shared Data Banks. CACM 13: 6, June 1970). Будучи математиком по образованию Кодд предложил использовать для обработки данных аппарат теории множеств (объединение, пересечение, разность, декартово произведение). Он показал, что любое представление данных сводится к совокупности двумерных таблиц особого вида, известного в математике как отношение – relation (англ.).
Реляционной является БД, в которой все данные, доступные пользователю, организованы в виде набора двумерных таблиц, а все операции над данными сводятся к операциям над этими таблицами.
Рис. 1.1. Некоторые операции реляционной алгебры
Предложив реляционную модель данных, Кодд создал и инструмент для удобной работы с отношениями – реляционную алгебру. Каждая операция этой алгебры использует одну или несколько таблиц (отношений) в качестве ее операндов и получает в результате новую таблицу, т.е. позволяет "разрезать" или "склеивать" таблицы (рис. 1.1).
Реляционная алгебра в явном виде представляет набор операций, которые можно использовать, чтобы сообщить системе, как в базе данных из определенных отношений реально построить необходимое отношение.
Реляционные операторы обладают одним важным свойством: они замкнуты относительно понятия отношения. Это означает, что выражения реляционной алгебры определяются над отношениями реляционных БД и результатом вычисления также являются отношения. Поскольку результатом любой реляционной операции является некоторое отношение, можно образовывать реляционные выражения, в которых вместо отношения-операнда некоторой реляционной операции находится вложенное реляционное выражение.
Выражения реляционной алгебры строятся на основе алгебраических операций (высокого уровня), и подобно тому, как интерпретируются арифметические и логические выражения, выражение реляционной алгебры также имеет процедурную интерпретацию. Другими словами, запрос, представленный на языке реляционной алгебры, может быть вычислен на основе вычисления элементарных алгебраических операций с учетом их старшинства и возможного наличия скобок.
Набор основных алгебраических операций состоит из восьми операций, которые делятся на два класса - теоретико-множественные операции и специальные реляционные операции, дополненные некоторыми специальными операциями, специфичными для баз данных.
В состав теоретико-множественных операций входят традиционные операции над множествами:
- объединение;
- пересечение;
- разность;
- декартово произведение.
Специальные реляционные операции включают:
- выборку;
- проекцию;
- естественное соединение;
- деление.
Операции объединения, пересечения и разности требуют от операндов совместимости по типу. Два отношения совместимы по типу, если:
Отношение А Отношение В
ID_NUM | NAME | CITY | AGE | ID_NUM | NAME | CITY | AGE |
1809 | Иванов | Москва | 45 | 1809 | Иванов | Москва | 45 |
1996 | Петров | Нижний Новгород | 39 | 1896 | Галкин | Иваново | 40 |
1777 | Сидоров | Рязань | 21 |
Объединением двух совместимых по типу отношений А и В (А È В) называется отношение с тем же заголовком, как в отношениях А и В, и с телом, состоящим из множества кортежей t, принадлежащих А или В или обоим отношениям.
А È В
ID_NUM | NAME | CITY | AGE |
1809 | Иванов | Москва | 45 |
1996 | Петров | Нижний Новгород | 39 |
1777 | Сидоров | Рязань | 21 |
1896 | Галкин | Иваново | 40 |
При выполнении операции объединения двух отношений создается отношение, включающее кортежи, входящие хотя бы в одно из отношений-операндов. Обратите внимание, что повторяющиеся кортежи удаляются по определению отношения.
Пересечением двух совместимых по типу отношений А и В (А Ç В) называется отношение с тем же заголовком, как в отношениях А и В, и с телом, состоящим из множества кортежей t, принадлежащих одновременно обоим отношениям А и В. Операция пересечения двух отношений создает отношение, включающее все кортежи, входящие в оба отношения-операнда.
А Ç В
ID_NUM | NAME | CITY | AGE |
1809 | Иванов | Москва | 45 |
Разностью двух совместимых по типу отношений А и В (А - В) называется отношение с тем же заголовком, как в отношениях А и В, и с телом, состоящим из множества кортежей t, принадлежащих отношению А и не принадлежащих отношению В.
Отношение, являющееся разностью двух отношений включает все кортежи, входящие в первое отношение, такие, что ни один из них не входит во второе отношение.
А - В
ID_NUM | NAME | CITY | AGE |
1996 | Петров | Нижний Новгород | 39 |
1777 | Сидоров | Рязань | 21 |
Декартово произведение двух отношений А и В (А ´ В), где А и В не имеют общих имен атрибутов, определяется как отношение с заголовком, представляющим собой сцепление двух заголовков исходных отношений А и В, и телом, состоящим из множества кортежей t таких что первым является любой кортеж отношения А, а вторым – любой кортеж, принадлежащий отношению В. Кардинальное число результирующего отношения равно произведению кардинальных чисел исходных отношений, а степень равняется сумме степеней.
Пусть отношение А – содержит имена всех текущих поставщиков, а отношение В – номера всех текущих деталей. Тогда А ´ В – это все текущие пары поставщик – деталь и деталь – поставщик.
Отношение А Отношение В
S1 | P1 |
S2 | P2 |
S3 | P3 |
P4 |
А ´ В
S1 | P1 | S2 | P1 | S3 | P1 |
S1 | P2 | S2 | P2 | S3 | P2 |
S1 | P3 | S2 | P3 | S3 | P3 |
S1 | P4 | S2 | P4 | S3 | P4 |
На практике явное использование операции декартово произведение требуется только для очень сложных запросов. Эта операция включена в реляционную алгебру по концептуальным соображениям: (декартово произведение требуется как промежуточный шаг при определении операции θ - соединения, которая используется довольно часто).
Выборка – это сокращенное название θ - выборки, где θ означает любой скалярный оператор сравнения (
).θ - выборкой, из отношения А по атрибутам Х и Y (А where X θ Y) называется отношение, имеющее тот же заголовок, что и отношение А, и тело, содержащее множества кортежей t отношения А, для которых проверка условия Х θ У дает значение истина. Атрибуты X и Y должны быть определены на одном и том же домене, а оператор должен иметь смысл для этого домена.
Операция выборка (или операция ограничение отношения) - создает новое отношение, содержащее только те строки отношения – операнда, которые удовлетворяют некоторому условию ограничения.
Пример операции выборки.
Отношение А.
ID_NUM | NAME | CITY | AGE |
1809 | Иванов | Москва | 45 |
1996 | Петров | Нижний Новгород | 39 |
1777 | Сидоров | Рязань | 21 |
1896 | Галкин | Москва | 30 |
A where CITY = 'Москва'
ID_NUM | NAME | CITY | AGE |
1809 | Иванов | Москва | 45 |
1896 | Галкин | Москва | 30 |
A where CITY = 'Москва' and AGE < 40
ID_NUM | NAME | CITY | AGE |
1896 | Галкин | Москва | 30 |
Проекцией отношения А по атрибутам Х, Y,…,Z (A[X, Y,…Z]), где каждый из атрибутов принадлежит отношению А, называется отношение с заголовком {Х, Y,…,Z} и с телом, содержащим множество всех кортежей вида <Х:x, Y:y, ..., Z:z> таких, что в отношении A имеется кортеж, атрибут Х которого имеет значение x, атрибут Y имеет значение y, ..., атрибут Z имеет значение z. Тем самым, при выполнении операции проекции получается «вертикальное» подмножество данного отношения, то есть подмножество, получаемое исключением всех атрибутов, отношения-операнда с естественным уничтожением потенциально возникающих кортежей-дубликатов.